OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的专业图形程序接口。OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。

基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL、Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里假定用户将Windows NT安装在C盘上)。OpenGL的图形库函数封装在动态链接库OpenGL32.DLL中,开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。OpenGL函数命令方式十分有规律,每个库函数均有前缀gl、glu、aux,分别表示该函数属于OpenGL基本库、实用库或辅助库。

VS2010配置OpenGL开发环境:

1、安装GLUT工具包:

代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。

Windows环境下的GLUT下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

将下载的压缩包解开,将得到5个文件(glut.dll, glut32.dll, glut.lib, glut32.lib,glut.h)

(1)把glut.h复制到x:\Program Files\Microsoft\Visual Studio 10.0\VC\include\gl文件夹中,如果没有gl这个文件夹则可以自己新建一个

(2)把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(即与include并排的lib文件夹下)

(3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)

注:如在开发应用程序时用到OpenGL辅助库函数,则还需下载相应动态链接库,包含glaux.dll, glaux.lib, glaux.h,相应步骤同上

2、创建OpenGL程序:

(1)创建一个Win32 Console Application

(2)链接OpenGL libraries。在Visual C++中先右击项目,选择属性,找到连接器标签,最后在输入中的附加依赖库加上opengl32.lib glut32.lib glu32.lib.

现在你可以把下面的例子拷贝到工程中去,编译运行,你可以看到一个三角形。

 



#include<gl/glut.h>
//#include<gl/glu.h>  //glut.h自动包含了glu.h 和 gl.h
//#include<gl/gl.h>
void renderScene(void)
{
    
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glLoadIdentity();
         glBegin(GL_TRIANGLES);
         glVertex3f(-0.5,-0.5,0.0);
         glVertex3f(0.5,0.0,0.0);
         glVertex3f(0.0,0.5,0.0);
         glEnd();
         glutSwapBuffers();
/*
         glClear(GL_COLOR_BUFFER_BIT);
         glRectf(-0.5f,-0.5f,0.5f,0.5f);
         glFlush();
         */
}
int main(int argc, char* argv[])
{
         glutInit(&argc, (char**) argv);
         glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
         glutInitWindowPosition(100,100);
         glutInitWindowSize(320,320);
         glutCreateWindow("Hello OpenGL");
         glutDisplayFunc(&renderScene);
         glutMainLoop();//enters the GLUT event processing loop.
         return 0;
}