此学习笔记参考书籍为Opengl超级宝典,第四版。在此记录和交流自己的学习心得,希望高手多多指教。
为何使用GLUT,首先出现的aux,即opengl辅助函数库。aux函数库的目标是帮助人们学习和编写opengl程序,而不必为任何平台特定的细节而分神,不必顾虑所使用的是UNIX,Windows还是其它平台。如果使用aux,将不是编写“最终"的代码,更像是一个预备阶段,对自己的想法进行测试。由于缺乏对基本的GUI功能的支持,因此限制了使用这个函数库创建实用的应用程序。
在发展过程中aux渐渐被glut(OpenGL utility toolkit,不要与标准的GLU——OpenGL utility library)函数库取代。glut在绝大部分的UNIX系统中得到了支持,Apple对这个函数库进行了维护和扩展。在Windows中,glut的开发已经中断。由于glut最初并不是作为一种开放源代码的软件,因此被一种新的freegult取代。
下面是一个最基本的Opengl例子。
#include "GL/freeglut.h"
void RenderScene(void)
{
//clear the window use the current color
glClear(GL_COLOR_BUFFER_BIT);
//
glFlush();
}
void SetupRC(void)
{
glClearColor(0.6f, 0.4f, 0.7f, 1.0f);
}
//
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutCreateWindow("Simple");
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
return 0;
}
运行结果如下图:
在此现在本课代码:http://download.csdn.net/detail/airbigboy/6304329
下面是对一些基本函数的简单解释: glut
void glutInit( int* pargc, char** argv );
传递简单参数,并对glut函数库进行初始化。
void glutInitDisplayMode( unsigned int displayMode );
设置glut在创建窗口时,使用哪种类型的现实模式。(单缓冲,双缓冲,颜色模式)
int glutCreateWindow( const char* title );
唯一的参数为窗口标题栏的标题
void glutMainLoop( void );
启动glut框架的运行。定义了用于屏幕显示的回调函数和其他函数。该函数一经调用不再返回,直到程序终止。在应用中只能调用一次,处理所有操作系统特有的信息 击键事件,知道程序终止。
void glutDisplayFunc( void (* callback)( void ) );
!传递显示回调函数,当窗口需要被绘制的时候调用该回调函数。(第一次显示,窗口改变大小,从被覆盖中恢复)
opengl
void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
这个函数设置了一种颜色,用于清除窗口。
void glClear (GLbitfield mask);
用于清除一个特定的缓冲区或者同时清除几个缓冲区。opengl具有多个缓冲区(颜色,深度,模板和累积)
void glFlush (void);
这行代码将导致所有未执行的opengl命令被执行。
在内部,opengl使用一条渲染管线安装线性顺序处理命令。opengl命令和语句常常在队列中等待。直到opengl驱动程序同时处理几个“命令”。这种设置可以提高性能,因为硬件之间的通信从本质上说比较缓慢。