OpenGL简介
OpenGL是目前用于开发可移植的、可交互的2D和3D图形应用程序的首选环境,也是目前应用最广泛的计算机图形标准。OpenGL是SGI公司开发的一套的计算机图形处理系统,是图形硬件的软件接口,GL代表图形库(Graphics Library)。OpenGL具有可移植性,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。
OpenGL不是一种编程语言,而是一种API(Application Programming Interface,应用程序编程接口)。当我们说某个程序是基于OpenGL的或者说它是个OpenGL程序是,意思是说它是用某种编程语言如C或C++编写的,其中调用了一个或多个OpenGL库函数。作为一种API,OpenGL遵循C语言的调用约定。
OpenGL主要包括三个函数库,它们是核心库、实用函数库和编程辅助库。核心库中包含了OpenGL最基本的命令函数。核心库提供了一百多个函数,这些函数都以”gl”为前缀,用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。实用函数库是比核心库更高一层的函数库,它提供四十多个函数,这些函数都以”glu”为前缀。由于OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。以下介绍以GLUT库为例。
GLUT代表OpenGL应用工具包(OpenGL Utility Toolkit),是一个与窗口系统无关的工具包。它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用”glut”。
一、下面以windows及visualC++为例介绍使用预编译库进行安装的过程:
(1)将gult32.dll复制到windows系统system32下
(2)将gult32.lib复制到vc的lib目录下
(3)将gult.h复制到vc的includeGL下
二、一个简单的OpenGL程序
#include <windows.h>
#include <gl/glut.h>
//绘图子程序
void display( void ) {
glClearColor( 1.0f,1.0f,1.0f,1.0f ); // 设置清除窗口时将窗口设为白色
glClear( GL_COLOR_BUFFER_BIT );// 执行窗口清理
glFlush(); // 刷新OpenGL中的命令队列和缓冲区,使所有尚未被执行的命令执行
}
void main( int argc,char** argv ) {
glutInit( &argc, argv ); // 初始化GLUT库
glutInitDisplayMode( GLUT_SINGLE| GLUT_RGB ); // 显示模式
glutCreateWindow( "Hello OpenGL!" ); // 创建一个窗口,参数为窗口的标题
glutDisplayFunc( display ); // 绘制当前窗口
glutMainLoop();//通常用于程序的结尾,表示开始运行程序.显示出所有创建的窗口
}
OpenGL扩展机制(OpenGL Extensions)是OpenGL的亮点之一。显卡的更新,带来了更多,更炫的新特性,使我们能够利用硬件的出色发挥来绘制出令人惊叹的3D画面。利用OpenGL的扩展机制,任何硬件厂商提供的新特性可以用方便的被我们的OpenGL程序所使用。(在这里不得不提一下OpenGL最强有力的对手Direct3D,Direct3D的更新机制是通过升级DirectX SDK开发包来实现了,这给我们的学习带来了不少的麻烦,我们不得不面对版本升级带来的各种问题,在这一点上,OpenGL的优势很明显)。
在使用OpenGL Extensions之前,一定要检查你的显卡是否支持这个扩展,只有确保了你的显卡支持这个扩展特性,才可以放心的使用。可以通过一些工具,如glview来完成这样的工作。
OpenGL的扩展机制使用起来并不复杂,但是仍然有一些人做了许多有益的工作,简化了我们使用OpenGL扩展的步骤,使我们使用OpenGL扩展就像OpenGL API自带的那样方便。这其中比较有名的是glext和GLEW,这这里我主要介绍GLEW.GLEW的全称是"OpenGL Extension Wrangler Library".GLEW主要帮助C/C++完成两项烦琐的任务:1)初始化和使用扩展;2)编写可移植的程序。有关GLEW更详细的资料和获取GLEW,可以查阅网站:http://glew.sourceforge.net/。
有了以上的预备知识,我们就可以在我们程序中使用一些新特性,下面以ARB_multiTexture为例,讲讲具体的操作:
预备工作:
硬件条件:一个支持ARB_multiTexture的显卡(怎么,不支持?要么升级显卡驱动,要么换个新的显卡吧:)
软件条件:GLUT3.7.6--http://www.xmission.com/~nate/glut.html
GLEW1.2.4--http://glew.sourceforge.net/
具体步骤:
1.确保GLUT和GLEW已经正确的安装。
2.包含头文件和连接库文件:
#include <GL\glew.h>
#include <GL\glut.h> //注意,glew.h必须放在最前面
连接库文件:opengl32.lib glu32.lib glut32.lib glew32.lib
3.glut和glew的初始化,glew必须在正确设定了Render Context后才能初始化,即在调用了glutCreateWindow()后才能初始话glew
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/houdy/archive/2004/10/06/126062.aspx