1、 GLvoid ReSizeGLScene(GLsizei width, GLsizei height)
作用是重新设置OpenGL场景的大小,获得透视场景。至少运行一次。在程序开始时设置透视图。OpenGL场景的尺寸将被设置成它显示时所在窗口的大小。绘制深度为0.1f-100.0f。
投影矩阵:为场景增加透视。
模型观察矩阵:存放物体讯息。
2、int InitGL(GLvoid)
对OpenGL进行所有的设置。清除屏幕所用的颜色,打开深度缓存,启用阴影平滑,光照,纹理等等。
阴影平滑:通过多边形精细的混合色彩,并对外部光进行平滑。
色彩值的范围从0.0f到1.0f。0.0f代表最黑的情况,1.0f就是最亮的情况。
glClearColor(红,绿,蓝,Alpha值)。
深度缓存:不断的对物体进入屏幕内部有多深进行跟踪。几乎所有在屏幕上显示3D场景OpenGL程序都使用深度缓存。它的排序决定那个物体先画。
3、int DrawGLScene(GLvoid)
所有的绘图代码。将屏幕清除成前面所决定的颜色,清除深度缓存并且重置场景。绘制要在屏幕上显示的东西。
4、GLvoid KillGLWindow(GLvoid)
作用是依次释放着色描述表,设备描述表,窗口句柄和窗口类。
ChangeDisplaySettings(NULL,0):回到原始桌面。将NULL作为第一个参数,0作为第二个参数传递,强制Windows使用当前存放在注册表中的值(缺省的分辨率、色彩深度、刷新频率,等等)来有效的恢复原始桌面。
5、 BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
创建OpenGL窗口。包含5个参数。
变量
PixelFormat:保存寻找到的象素格式的模式值。
Wc:用来保存窗口类的结构。窗口类结构中保存窗口信息。通过改变类的不同字段可以改变窗口的外观和行为。每个窗口都属于一个窗口类。当创建窗口时,必须为窗口注册类。
dwExStyle和dwStyle:存放扩展和通常的窗口风格信息。使用变量来存放风格的目的是为了能够根据需要创建的窗口类型(是全屏幕下的弹出窗口还是窗口模式下的带边框的普通窗口)来改变窗口的风格。
WindowRect:矩形的左上角和右下角的坐标值。使用这些值来调整窗口使得其上的绘图区的大小恰好是所需的分辨率的值。通常如果创建一个640x480的窗口,窗口的边框会占掉一些分辨率的值。
fullscreen的值必须永远fullscreenflag的值。
(注意顺序!)
先取得窗口的实例,然后定义窗口类,最后注册窗口类。
全屏模式/窗口模式:要在创建窗口之前设置全屏模式。确保在全屏模式下所用的宽度和高度等同于窗口模式下的宽度和高度。
创建窗口并检查窗口是否成功创建。
描述象素格式。
取得DC。
取得选定的象素格式。设置象素格式。
取得RC。激活RC。
显示窗口。设为前端窗口(给它更高的优先级),并将焦点移至此窗口。然后调用ReSizeGLScene 将屏幕的宽度和高度设置给透视OpenGL屏幕。
InitGL
6、LRESULT CALLBACK WndProc
处理所有的窗口消息。注册好窗口类后运行。处理的消息包括:WM_ACTIVE,WM_SYSCOMMAND(系统命令),WM_CLOSE,WM_KEYDOWN,WM_KEYUP,WM_SIZE。
7、int WINAPI WinMain
Windows程序的入口函数。将会调用窗口创建例程,处理窗口消息,并监视人机交互。
变量
msg :用来检查是否有消息等待处理。
Done:程序的运行状态。
选择运行模式-创建OpenGL窗口-循环开始(处理窗口消息,绘制场景,用户交互)。
PW:
RGBA代表Red Green Blue Alpha。虽然它有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间,但是Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。 alpha通道一般用作不透明度参数。如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。在0%和100%之间的值则使得像素可以透过背景显示出来,就像透过玻璃(半透明性),这种效果是简单的二元透明性(透明或不透明)做不到的。它使数码合成变得容易。alpha通道值可以用百分比、整数或者像RGB参数那样用0到1的实数表示。 有时它也被写成ARGB(像RGBA一样,但是第一个数据是alpha),是Macromedia的产品使用的术语。比如,0x80FFFF00是50%透明的黄色,因为所有的参数都在0到255的范围内表示。0x80是128,大约是255的一半。 PNG是一种使用RGBA的图像格式。 分辨率(resolution,港台称之为解释度)就是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。