opengl学习笔记2-1-基本的运行框架

来源:互联网 发布:中国大数据网站 编辑:程序博客网 时间:2024/06/05 20:13

此学习笔记参考书籍为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 colorglClear(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驱动程序同时处理几个“命令”。这种设置可以提高性能,因为硬件之间的通信从本质上说比较缓慢。

原创粉丝点击