当前位置:文档之家› 计算机图形学 第二 OpenGL环境下图形系统的设计

计算机图形学 第二 OpenGL环境下图形系统的设计

2010-12-26 计算机图形学 2
2 OpenGL应用程序的工作过程 应用程序的工作过程
作为图形硬件的软件接口, 作为图形硬件的软件接口,OpenGL最主要的 最主要的 工作就是将二维及三维物体描绘至帧缓存中。 工作就是将二维及三维物体描绘至帧缓存中。 这些物体由一系列的描述物体几何性质的顶 或描述图像的像素(Pixel)组成。 组成。 点(Vertex)或描述图像的像素 或描述图像的像素 组成 OpenGL执行一系列的操作后把这些数据最终 执行一系列的操作后把这些数据最终 转化成像素数据, 转化成像素数据,并在帧缓存中形成最后的 结果。下面对OpenGL的工作做概要性介绍。 的工作做概要性介绍。 结果。下面对 的工作做概要性介绍
2010-12-26
计算机图形学
15
OpenGL的函数约定 的函数约定
说明了OpenGL函数的各个部分。这个 函数的各个部分。 图9.2说明了 说明了 函数的各个部分 带有后缀3f的函数采用了三个浮点参数 的函数采用了三个浮点参数。 带有后缀 的函数采用了三个浮点参数。
图9.2
2010-12-26
2010-12-26
计算机图形学
17
需要把glut32.dll 需要把glut32.dll 拷贝到 c:\windows\ c:\windows\system32, 把 glut32.lib 拷贝 到 c:\msdev\lib, 把glut.h 拷贝到 c:\msdev\ c:\msdev\include\ c:\msdev\include\gl 。
2010-12-26
计算机图形学
4
3 OpenGL的简单例程 的简单例程
#include <GL/glut.h> int main(int argc, char** argv) {
glutInit(&argc, argv); //初始化 初始化GLUT 初始化 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); //设置显示模式位单缓 设置显示模式位单缓 存,RGB模式 存, 模式 glutInitWindowSize (800, 600); //设置窗口大小 设置窗口大小 glutInitWindowPosition(0,100); glutCreateWindow("Line DDA algorithm !"); //创建一个渲染窗口,并吧标题 创建一个渲染窗口,并吧标题 栏设置为相应字符串 Myinit(); //窗口初始化 窗口初始化 //调用显示函数 调用显示函数 glutDisplayFunc (Display);
OpenGL函数说明 OpenGL函数说明
计算机图形学 16
6 环境的设置
从下示网站下载glutdlls.zip( 从下示网站下载glutdlls.zip(红色方块中的 glutdlls.zip 117KB文件 文件) 117KB文件) /~nate/glut.html
前缀 数据类型 相应C语言类 相应 语言类 型 OpenGL类型 类型
f d Ub Us Ui
32位浮点数 位浮点数 64位浮点数 位浮点数 8位无符号整 位无符号整 数 16位无符号 位无符号 整数 32位无符号 位无符号 整数
float double unsigned char unsigned short unsigned long
glutMainLoop(); // 必须添加的函数,用来维持显示图像显示过程的交互,而 且必须作为最后调用的一个函数 return 0; }
2010-12-26 计算机图形学 9
void Myinit(void) { 设置RGBA RGBA模式 glClearColor (0, 0,0, 0.0); // 设置RGBA模式 glMatrixMode(GL_PROJECTION); glLoadIdentity();//把投影矩阵置为单位阵 glLoadIdentity();//把投影矩阵置为单位阵 (0.0,1024,0.0,768);//定义世界坐 gluOrtho2D (0.0,1024,0.0,768);//定义世界坐 标的裁剪窗口, 标的裁剪窗口,也就是通常说的视口 //也就是在这个范围内的物体都将正投影到X0Y平面 也就是在这个范围内的物体都将正投影到X0Y //也就是在这个范围内的物体都将正投影到X0Y平面 }
2010-12-26
计算机图形学
12
5、 OpenGL的基本语法规则 、 的基本语法规则
OpenGL的数据类型 的数据类型 列出了OpenGL数据类型在 位 数据类型在32位 表9-1列出了 - 列出了 数据类型在 Windows环境下相应的 数据类型以及字面值 环境下相应的C数据类型以及字面值 环境下相应的 所用的前缀。 所用的前缀。
GLfloat,GLclampf GLdouble,GLclampd GLubyte,GLboolean GLushort GLuint,GLenum,GLb itfield
2010-12-26
计算机图形学
14
OpenGL的函数约定 的函数约定
OpenGL函数都遵循一个命名约定,所有函数 函数都遵循一个命名约定, 函数都遵循一个命名约定 都有一个根段,代表该函数相应的OpenGL OpenGL命 都有一个根段,代表该函数相应的OpenGL命 如图9.2所示,glColor3f函数的根段是 9.2所示 令。如图9.2所示,glColor3f函数的根段是 Color,gl前缀代表gl库 前缀代表gl Color,gl前缀代表gl库,3f后缀表示该函数 使用3个浮点参数。所有的OpenGL OpenGL函数都采用 使用3个浮点参数。所有的OpenGL函数都采用 以下格式: 以下格式: <库前缀 根命令 可选的参数个数 可选 库前缀><根命令 可选的参数个数><可 库前缀 根命令><可选的参数个数 的参数类型> 的参数类型
前缀 数据类型 相应C语言 相应 语言 类型 signed char OpenGL类型 类型 GLbyte GLshort GLint,GLsizei
b
8位整数 位整数 16位整数 位整数
32位整数 位整数
s
i
2010-12-26
short long
计算机图形学
13
OpenGL的数据类型 的数据类型
4 OpenGL程序的基本结构 程序的基本结构 程序
1、初始化部分 、 2、设置观察坐标系下的取景模式和取景框位 、 置及大小。 置及大小。 3、OpenGL的主要部分 、 的主要部分 使用OpenGL OpenGL的库函数构造几何物体对象 使用OpenGL的库函数构造几何物体对象 的数学描述,包括点划线的位置和拓扑关系, 的数学描述,包括点划线的位置和拓扑关系, 几何变换,光照处理等等。 几何变换,光照处理等等。
void Display(void) { 清除颜色缓冲区。 glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。 glBegin (GL_LINES); glColor3f(1,1, 1.0); glVertex2f(0, 0); glVertex2f(600, 400); glEnd(); glFlush();//所有未被执行的命令被执行单缓冲区需要强制 glFlush();//所有未被执行的命令被执行单缓冲区需要强制 执行一次glFlush(),进行一次刷新操作。 glFlush(),进行一次刷新操作 执行一次glFlush(),进行一次刷新操作。 }
2010-12-26
计算机图形学
3
在屏幕上显示图像的步骤是以下3步 在屏幕上显示图像的步骤是以下 步: 1、构造几何要素(点、线、多边形、位图), 多边形、位图), 、构造几何要素( 创建对象的数学描述;在三维空间上放置对 创建对象的数学描述; 象,选择合适的场景观察点。 选择合适的场景观察点。 2、计算对象的颜色,这些颜色可能直接定义 、计算对象的颜色, 或由光照条件及纹理间接给出。 或由光照条件及纹理间接给出。 3、光栅化,把对象的数学描述和颜色信息转 、光栅化, 换到屏幕的像素。 换到屏幕的像素。
OpenGL简介 OpenGL简介
2010-12-26
计算机图形学
1
1 概 述
OpenGL是一个功能强大的图形库, OpenGL是一个功能强大的图形库,用户可以方便地利 是一个功能强大的图形库 用它开发出有多种特殊视觉效果(如光照、纹理、 用它开发出有多种特殊视觉效果(如光照、纹理、透 阴影)的二维、三维图形。 明、阴影)的二维、三维图形。 其前身是SGI SGI公司为其图形工作站设计的一个图形 其前身是SGI公司为其图形工作站设计的一个图形 开发软件库IRIS GL( library图形库 图形库), 开发软件库IRIS GL(graphics library图形库), 由于其性能优越,受到了用户的一致推崇。 由于其性能优越,受到了用户的一致推崇。 OpenGL经过对 的进一步发展,实现二维和三维 经过对GL的进一步发展 经过对 的进一步发展, 的高级图形技术,在性能上表现得异常优越。它的功 的高级图形技术,在性能上表现得异常优越。 能包括建模、变换、光线处理、色彩处理、 能包括建模、变换、光线处理、色彩处理、动画以及 更先进的能力,如纹理影射、物体运动模糊等。 更先进的能力,如纹理影射、物体运动模糊等。 OpenGL的这些能力为实现逼真的三维渲染效果、建 的这些能力为实现逼真的三维渲染效果、 的这些能力为实现逼真的三维渲染效果 立交互的三维景观等提供了条件。 立交互的三维景观等提供了条件。
相关主题