一、OpenGL 简介
OpenGL(Open Graphics Library), 是一个跨平台的全局性图像处理API, 几乎可以用于所有操作系统中。OpenGL提供了一套能够显示复杂三维图形的高效的底层硬件接口(API)。在业内广泛应用于计算机图形、虚拟现实、游戏开发等领域。
OpenGL 是由 Silicon Graphics 构建,是一种用于图形计算机的 API。最初设计是作为硬件加速3D 图形的备选渲染API。SILICON GRAPHICS 还维护着这个库,并推动它的发展。OpenGL 为 C、C++、Python 和 Java 提供了语言绑定。它可被 实现在 PC、工作站、“超级计算机”和游戏主机。现在 OpenGL 已经被很多图形界面所使用,比如 Windows 的 Aero 和 Apple 的 Aqua。
#include#include #include
二、OpenGL 开发工具与库
除了有些必要的程序设计工具和图形开发工具以外,常用的 OpenGL 开发工具有 glxgears、gears、glmark2、glxinfo。
OpenGL 的库分为系统提供的库和第三方提供的库两类。
其中,系统提供的库在安装完 Mesa 以后自动安装,比如一些头文件和链接库。而第三方提供的库通常是为方便使用 OpenGL 的开发人员而设计的,如 GLUI界面库、DevIL游戏图形文件处理库等等。
三、OpenGL 编程步骤
使用 OpenGL 进行程序编写的基本步骤如下:
1.创建窗口
//创建窗口API glutCreateWindow(name);
2.指定上下文
//设置特定于窗口的OpenGL上下文 glutSetWindow(window);
3.窗口调整、视角设定
glViewport(x, y, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(xMin, xMax, yMin, yMax, near, far);
4.绘制图形
//设置绘图颜色和绘制方式 glColor3f(red, green, blue); glBegin(GL_TRIANGLES); glVertex3f(x1, y1, z1); glVertex3f(x2, y2, z2); glVertex3f(x3, y3, z3); glEnd();
5.渲染轮廓
glFlush();
6.加入用户控制
glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMotionFunc(motion);
四、OpenGL 常见应用
OpenGL 因其丰富的图形渲染功能而被应用于各种领域。其中,较为常见的应用包括游戏开发、科学计算等。
1.游戏开发
OpenGL 在游戏引擎上得到了广泛的应用。游戏开发者可以使用 OpenGL API 来绘制高质量的 2D/3D 图形、怪物、角色或者背景等元素。
2.科学计算
OpenGL 同样可以通过拓展的科学计算库 GLSL 那个与图形处理器 (GPU) 交互进行向量和矩阵的运算,从而让编程工作更加实用和简单。不同领域下的较大规模的科学计算在共享计算资源的处理器基础上,常会使用 GPU 的处理能力进行加速运算,从而提高计算效率。
五、代码示例
以下为一个绘制简单三角形的代码示例:
#include#include #include void display(void) { // 绘制颜色缓冲区 glClear(GL_COLOR_BUFFER_BIT); // 绘制三角形,默认为白色 glBegin(GL_TRIANGLES); glVertex2f(-0.5, -0.5); glVertex2f(0.5, -0.5); glVertex2f(0, 0.5); glEnd(); glutSwapBuffers(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(400, 400); glutCreateWindow("OpenGL 第一个窗口"); glutDisplayFunc(display); // 背景颜色为蓝色,glClearColor设置背景缓冲区颜色, 但仅是清除当前窗口与更新窗口时所产生的背景,不会影响其他窗口 glClearColor(0.0, 0.0, 1.0, 0.0); glutMainLoop(); return 0; }