1 / 24

OpenGL 图形函数库

OpenGL 图形函数库. 开放式的三维图形软件包 OpenGL. OpenGL 是近几年发展起来的一个性能卓越的 三维图形标准 ,它是在 SGI 等多家世界闻名的计算机公司的倡导下,以 SGI 的 GL 三维图形库为基础制定的一个通用共享的开放式三维图形标准。 目前,包括 Microsoft 、 SGI 、 IBM 、 SUN 、 HP 等大公司都采用了 OpenGL 做为三维图形标准,许多软件厂商也纷纷以 OpenGL 为基础开发出自己的产品。. OpenGL 的优越性. 独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;

Download Presentation

OpenGL 图形函数库

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL图形函数库

  2. 开放式的三维图形软件包OpenGL • OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。 • 目前,包括Microsoft、SGI、IBM、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品。

  3. OpenGL的优越性 • 独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植; • 可与Visual C++紧密接口,便于实现有关计算和图形算法,可保证算法的正确性和可靠性; • 使用简便,效率高。

  4. OpenGL图形库的功能 OpenGL图形库一共有100多个函数。其中核心函数有115个。除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面(如Bezier、NURBS等曲线或曲面)绘制函数。 • 基本几何变换和投影变换。 • 颜色模式设置 • 光照和材质设置 • 纹理映射功能 • 位图显示和图象增强 反走样(Antialiasing)和雾(fog)的特殊图象效果处理 • 双缓存(Double Buffering)动画 双缓存即前台缓存和后台缓存,即后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。

  5. OpenGL程序的基本结构 OpenGL程序基本结构由OpenGL初始化的绘图状态描述和绘制对象组成。OpenGL为用户提供了3个函数库: • OpenGL基本库opengl32.lib,操作函数前缀gl • OpenGL实用库glu32.lib,操作函数前缀glu • OpenGL辅助库glaux.lib,操作函数前缀aux 编程时需将这三个函数库加到工程(project)中。

  6. OpenGL基本函数库 • OpenGL基本函数库用来描述图元、属性、几何变换、观察变换和进行许多其它的操作。 • OpenGL基本函数库中的函数名要以gl为前缀,且函数名中每一组成词的第一个字母要大写。 glBegin glClear glCopyPixels • 常量均以大写字母GL开头,另外,常量名中各组成词均采用大写,单词之间用下划线分隔。 GL_RGB GL_AMBIENT_AND_DIFFUSE • 数据类型名以大写字母GL开头,名字中其余部分是用小写字母表示的标准数据类型名。 GLbyte GLshort GLint

  7. OpenGL实用函数库 OpenGL实用函数库提供了一些例程,可以设置观察和投影矩阵,利用线条和多边形近似法来描述复杂对象,使用线性近似法显示二次曲线和样条曲线,处理表面绘制操作,以及完成其它的复杂任务。 操作函数前缀glu

  8. OpenGL辅助函数库 这个库建立了一系列简单而又较完整的编程例子,例如初始化窗口、监控输入,以及绘制一些三维几何体等函数。辅助库函数用前缀aux。

  9. OpenGL实用函数工具包 OpenGL实用函数工具包(OpenGL Utility Toolkit,GLUT)提供了与任意屏幕窗口系统进行交互的函数库。 GLUT库函数以glut为前缀,该库中也包含了描述与绘制二次和样条曲线及曲面的方法。

  10. OpenGL状态机制 OpenGL的工作方式是一种状态机,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。例如,当前颜色就是一个状态变量,在这个状态改变之前,绘制的每个象素都将使用该颜色,直到当前颜色被设置为其它颜色为止。OpenGL中大量地使用了这种状态机制,如颜色模式、投影模式、单双显示缓存区的设置、背景色的设置、光源的位置和特性等等。许多状态变量可以通过glEnable(),glDisable()这两个函数来设置成有效或无效状态,如是否设置光照、是否进行深度检测等;在被设置成有效状态之后,绝大部分状态变量都有一个缺省值。

  11. OpenGL程序结构 • 初始化操作—主要是设置一些OpenGL的状态开关,如颜色模式的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。 • 定义窗口—定义所绘对象在屏幕坐标系的显示位置和显示窗口大小及其属性。 • 绘制和显示图形—使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系,几何变换,光照处理等等。实现图形显示。

  12. Glut配置 • glut是一个win32 dynamic lib,先下载 glutdlls37beta.zip, • 解压后把glut32.dll放到 windows system目录下。 • 另建目录,如 c:\glut,再在c:\glut下面 建c:\glut\include\gl,把头文件glut.h放到c:\glut\ include\ gl下面。 • 再在c:\glut下面建c:\glut\lib,把glut32.lib放在c:\glut\lib下面。 • 把glut加到工程中(project)

  13. 头文件 在所有的程序中需要包含一个头文件以引入OpenGL核心库。在许多应用中需要GLU,需要包含头文件来引入窗口系统,因此,源程序的开头几行 为: #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> 但如果使用GLUT处理窗口管理操作,就不需要引入gl.h和glu.h,因为GLUT保证了它们的正确引入,可使用#include <GL/glut.h>代替OpenGL和GLU的头文件。

  14. #include <GL/glut.h> // (or others, depending on the system in use) void init (void) { glClearColor (1.0, 1.0, 1.0, 0.0); // Set display-window color to white. glMatrixMode (GL_PROJECTION); // Set projection parameters. gluOrtho2D (0.0, 200.0, 0.0, 150.0); } void lineSegment (void) { glClear (GL_COLOR_BUFFER_BIT); // Clear display window. glColor3f (0.0, 0.0, 1.0); // Set line segment color to red. glBegin (GL_LINES); glVertex2i (180, 15); // Specify line-segment geometry. glVertex2i (10, 145); glEnd ( ); glFlush ( ); // Process all OpenGL routines as quickly as possible. }

  15. void main (int argc, char** argv) { glutInit (&argc, argv); // Initialize GLUT. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Set display mode. glutInitWindowPosition (50, 100); // Set top-left display-window position. glutInitWindowSize (400, 300); // Set display-window width and height. glutCreateWindow ("An Example OpenGL Program"); // Create display window. init ( ); // Execute initialization procedure. glutDisplayFunc (lineSegment); // Send graphics to display window. glutMainLoop ( ); // Display everything and wait. }

More Related