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

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

最新版OpenGL 2.1 Reference 函数速查手册CHM格式 ------------ 1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,该语言是“OpenGL 2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。   OpenGL 2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3DLabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL 2.0将由OpenGL 1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。 OpenGL 2.1版相比2.0版主要的更新包括: 1. GLSL升级至1.2版 2. 支持非正方形的矩阵. UniformMatrix {2x3,3x2,2x4,4x2,3x4,4x3}fv 3. 象素缓冲对象(Pixel Buffer Object). 它扩充了缓冲对象的接口.现在缓冲区对象可以支持顶点数组和象素数据了.象素缓冲对象能加速在GPU内存中进行的缓冲区之间的数据拷贝及其他象素操作. 4. sRGB纹理. 遵循IEC 61966-2-1.标准的sRGB颜色空间的纹理格式(包括压缩和非压缩格式).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值