OPENGL学习笔记整理(一)
时间:2011-02-17 来源:unsigned
撇开平台的关系,OPENGL整个程序涉及了那些函数呢。有点忘了,赶紧整理了一下。
首先,我们先不是面向对象编程,还是面向过程的。虽然面向对象编程很流行了,不过对于理解最简单的OPENGL,用它就太麻烦了。
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("3D Effects Demo");
glutReshapeFunc(ChangeSize);
glutKeyboardFunc(KeyPressFunc);
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
glDeleteTextures(4,textures);
return 0;
}
这几个函数接触过OPENGL的人应该都会有印象的。但是习惯了MFC之后,很多函数没有用过了,也已经忘得差不多了。还是把各个函数整理下吧。
glutInit这个函数,我从来没有去改变过他,顾名思义,知道它是初始化的,就不管它了。
glutInitDisplayMode显然是用来设置显示模式的,正常情况下和上面设置的一样,双缓冲、使用RGBA颜色模式、使用深度缓存。当然想用其它缓存的时候应该也要设置这个函数。至于可否在程序运行过程中改变设置,我就不知道了。
glutInitWindowSize,显然只是用来设置窗口大小的,没其它的作用了。
glutCreateWindow,创建一个窗口,仅有一个参数记录窗口的显示标题。
glutReshapeFunc
void glutReshapeFunc(void (*func)(int width, int height));
用户可以自己写一个函数,然后接收两个参数之后,做一定的工作。通常是为了避免在窗口大小变化的过程中显示的内容扭曲失真。
glutKeyboardFunc
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
用户可以自定义一个键盘响应函数,它有三个参数,第一个用来接收键盘按键的ASCII值,后两个是鼠标在屏幕上的位置。
当然在glut库里面还有一个响应鼠标事件的函数glutMouseFunc,void glutMouseFunc(void (*func)(int button, int state, int x, int y))。还有鼠标移动事件等等的响应函数。
glutDisplayFunc,void glutDisplayFunc(void (*func)(void));
这个函数就不用解释了吧,在里面随便写就好了。
SetupRC,用户在里面自己对纹理啊什么做设置的函数,稍微大点的程序都会有的。
glutMainLoop这个函数的作用当然是启动整个过程了,至于它底层是怎么运行的,没有去查过,我想也没这个必要。
除了以Func结尾的这几个函数所调用的函数和SetupRC需要用户自己写以外,其他的东西相对来说很固定了。