在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架.
在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件。
代码的前4行包括了我们使用的每个库文件的头文件。如下所示:
#include <windows.h>// Windows的头文件
#include <glew.h> // 包含最新的gl.h,glu.h库
#include <glut.h>// 包含OpenGL实用库
接下来需要设置使用的所有变量。本节中的例程将创建一个空的OpenGL窗口,因此我们暂时还无需设置大堆的变量。余下需要设置的变量不多,但十分重要。几乎所写的每一个OpenGL程序中都会用到它们。
第一行设置的变量是Rendering Context(着色描述表)。每一个OpenGL都被连接到一个着色描述表上。着色描述表将所有的OpenGL调用命令连接到Device Context(设备描述表)上。我将OpenGL的着色描述表定义为 hRC 。
要让程序能够绘制窗口的话,还需要创建一个设备描述表,也就是第二行的内容。Windows的设备描述表被定义为 hDC 。DC将窗口连接到GDI(Graphics Device Interface图形设备接口)。而RC将OpenGL连接到DC。第三行的变量 hWnd 将保存由Windows给我们的窗口指派的句柄。最后,第四行为我们的程序创建了一个Instance(实例)。
HGLRC hRC=NULL;// 窗口着色描述表句柄
HDC hDC=NULL;// OpenGL渲染描述表句柄
HWND hWnd=NULL;// 保存我们的窗口句柄
HINSTANCE hInstance;// 保存程序的实例
boolkeys[256];// 保存键盘按键的数组
boolactive=TRUE;// 窗口的活动标志,缺省为TRUE
boolfullscreen=TRUE;// 全屏标志缺省,缺省设定成全屏模式
下面的代码的作用是重新设置OpenGL场景的大小,而不管窗口的大小是否已经改变(假定您没有使用全屏模式)。OpenGL场景的尺寸将被设置成它显示时所在窗口的大小。
GLvoid ReSizeGLScene(GLsizei width, GLsizei height){
if (height==0)// 防止被零除
{
height=1;// 将Height设为1
}