1 / 15

OpenGL 编程基本流程

OpenGL 编程基本流程. 康健超. OpenGL 介绍. OpenGL 是图形硬件的一个软件接口。它的主要作用是将二维或三维的对象绘入一个帧缓冲区中。对象被描述为一系列的顶点(用来定义几何对象)或像素 (用来定义图像)。 OpenGL 对数据进行几个步骤的处理从而将其转换成像素,这些像素将在帧缓冲区中形成最终需要的图形 。. OpenGL 介绍. OpenGL 是一种 C/S 架构,没有提供用于描述三维物体模型的高层函数,仅仅提供少数几个基本图元函数。 OpenGL 的移植性好、使用简单、效率高。

didier
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是图形硬件的一个软件接口。它的主要作用是将二维或三维的对象绘入一个帧缓冲区中。对象被描述为一系列的顶点(用来定义几何对象)或像素(用来定义图像)。OpenGL 对数据进行几个步骤的处理从而将其转换成像素,这些像素将在帧缓冲区中形成最终需要的图形。

  3. OpenGL介绍 • OpenGL是一种C/S架构,没有提供用于描述三维物体模型的高层函数,仅仅提供少数几个基本图元函数。 • OpenGL的移植性好、使用简单、效率高。 • OpenGL的功能如下:建模、变换、颜色模式设置、纹理映射、位图显示和图像增强、双缓冲。

  4. OpenGL介绍 • OpenGL包括大约250个函数(其中200个在OpenGL核心中,其他50个在OpenGL使用库中),可以使用它们来指定物体和操作,以创建交互式三维应用程序。 • OpenGL包括实用库(GLU)、实用工具包(GLUT) • OpenGL函数中包含前缀gl,且每个单词的首字母都是大写,如glColor3f()。同样,OpenGL常量都以GL打头,且所有字母都是大写,单词之间用下划线相连,如GL_COLOR_BUFFER_BIT。 • 有些OpenGL函数的名称中包含后缀“v”,这表明它将一个指向向量(数组)的指针(而不是一系列的值)作为参数。

  5. OpenGL环境配置 • 将glut32.lib、glut.lib放在VC6.0安装目录下VC98\Lib文件夹下。 • gltu.h放在VC6.0安装目录下VC98\Include\GL文件夹下。 • Glut32.dll、glut.dll放在C:\WINDOWS\system32文件夹下。 • 在Project Setting->Link标签下的library modules下输入和OpenGL相关的库OpenGL32.lib glu32.lib glaux.lib glut32.lib。

  6. 建立OpenGL程序 • 包含文件 #include <GL/gl.h>,#include<GL/glu.h> • 像素格式 通过一种叫做PIXELFORMATDESCRIPTOR的结构,来完成对像素属性的设置,包括缓存设置、颜色模式、颜色位数、深度缓存位数等。 • 渲染描述表 用来保存着在窗口中用来渲染一个场景所需的信息。一个OpenGL应用程序必须有一个渲染描述表,并且在进行OpenGL绘制之前它应当是当前的。

  7. 指定几何体的OpenGL模型 • 指定几何体函数: glBegin(mode) //顶点列表:在mode所指定的绘图模式下创建模型的顶点数据。 //外观属性信息:比如颜色,法线和纹理信息坐标也可以指定 glEnd(); • mode :说明顶点列表创建图像的方式 比如: GL_POINTS :为顶点列表中的顶点创建一个点 GL_LINES:顶点列表中的每两个顶点,创建一条线 GL_LINES_STRIP:顶点列表中的所有顶点依次连成一条线 GL_TRIANLE:顶点列表中的三个顶点数据为一组,连成一个三角形 GL_QUADS:顶点列表中的四个顶点数据为一组,连成一个四边形

  8. 指定几何体的OpenGL模型 • 顶点列表中如何指定顶点 • glVertex*()代表的是一系列仅顶点数据类型不同的函数: glVertex3f(x,y,z):顶点坐标为是GLfloat glVertex2d(x,y):顶点是2维的Glint glVertex3fv(x): x为向量 Glfloat x[3]

  9. OpenGL工具中的附加对象 • 1 GLU二次曲面对象 • 声明二次曲面对象:GLUquadric *gluNewQuadric(void) 圆柱体: void gluCylinder(……),球体: void gluSphere(……) 圆盘:void gluDisk(……) • 2 GLUT 对象 • GLUT 提供的模型是几何实体,形状固定。 圆锥 : glutSolidCone/glutWireCone 立方体:glutSolidCube 十二面体:glutSolidDodecahedron 八面体:glutSolidOctahedron 球体:glutSolidSphere 茶壶:glutSolidTeapot 四面体:glutSolidTetrahedron 圆环:glutSolidTorus

  10. OpenGL中的变换 1.投影变换 由用户定义的投影生成 void gluPerspective( GLdouble fovy//角度, GLdouble aspect //视景体的宽高比,GLdouble zNear//沿z轴方向的两裁面之间的距离的近处, GLdouble zFar//沿z轴方向的两裁面之间的距离的远处, ); //设置透视投影矩阵 void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );//将当前的可视空间设为正投影空间

  11. OpenGL中的变换 • 2 模视变换 • 从用户的视图变换以及所有在程序当中用到的模型变换得到。 • void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz );//定义视点矩阵 • 实际的编程应用中,用户在完成场景的建模后,往往需要选择一个合适的视角或不停地变换视角

  12. OpenGL中的变换 • 模型变换: 旋转:glRotatef(angle,x,y,z) 平移:glTranslate(tx,ty,tz) 缩放:glScalef(sx,sy,sz) 如何使用: glMatrixMode(GL_MODEVIEW);//设置当前的矩阵为模视矩阵。 glLoadIdentity();//设置为默认的单位矩阵

  13. 控制台下的OpenGL程序 • 控制台下OpenGL程序的组成部分: void main() void SetupRC(void)// 设置初始渲染状态 void RenderScene(void)//绘制场景及绘图 void ChangeSize(GLsizei w,GLsizei h)//修改可视区域和视口,当窗口改变大小时被调用

  14. MFC下的OpenGL程序 • MFC下的OpenGL程序和控制台下的OpenGL程序的对应关系: • BOOL View::InitializeOpenGL(CDC* pDC) void SetupRC(void)// 设置渲染状态 • void View::OnSize(UINT nType, int cx, int cy) void ChangeSize(GLsizei w,GLsizei h)//修改可使区域 • BOOL View::RenderScene() void RenderScene(void)//绘制场景

  15. 程序 • 一个简单的OpenGL程序,绘制一个立方体和一个球体。

More Related