OpenGL绘图相关函数

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013-6-27
27 27
OpenGL中的实体模型函数

绘制实体或线框圆环
void glutSolidTorus/ glutWireTorus(GLdouble
innerRadius, GLdouble outerRadius, GLint
slices,GLint stacks);

绘制实体或线框茶壶
2013-6-27
11
OpenGL程序实例——绘制图形


指定窗口背景色( glClearColor)
颜色管理,使用RGB颜色模型。一种颜色用红、绿、 蓝三种颜色成分混合而成,每种颜色成分使用0.0到 1.0之间的任意有效浮点数来表示颜色值(见下页)。
2013-6-27
12
OpenGL程序实例——绘制图形
第二章
2013-6-27
1
2.6 OpenGL图形软件包
OpenGL的主要功能 OpenGL的绘制流程 OpenGL的基本语法 OpenGL的程序实例
2013-6-27
2
OpenGL图形软件包
OpenGL是SGI(Silicon Graphics Inc.)公司对IRIS GL
图形硬件
操作系统
图2.34 OpenGL图形处理系 统在计算机系统中的层次结构
2013-6-27 5
OpenGL的绘制流程——流水线
包括命令、顶点数据和纹理等数据的OpenGL命令将放在命令 缓冲区中,对几何顶点数据进行必要的变换、光照计算并进行 投影后进入光栅化流程,根据几何形状、颜色及纹理数据生成 图像的帧缓存地址和像素点值,结果置入帧缓冲存储器中。
2013-6-27
14
第三章
2013-6-27
15
3.4 OpenGL实现橡皮筋技术
橡皮筋技术的实现方法

利用颜色的异或操作,对原有图形并不是擦除, 而是再绘制一条同样的直线段并与原图形进行 异或操作,此时原图形会从屏幕上消失;
利用双缓存技术,绘制图形时分别绘制到两个 缓存,交替显示。

2013-6-27
2013-6-27
25
OpenGL中的实体模型函数
GLUT库中的多面体函数
表4.1 GLUT生成规则多面体的函数
函数 glutSolidTetrahedron( ) glutWireTetrahedron( ) glutSolidCube(size) glutWireCube(size) glutSolidOctahedron ( ) glutWireOctahedron ( ) 说明 绘制中心位于世界坐标系原点的实心四面体和线框四面体,四面体 的半径为 。 绘制中心位于世界坐标系原点的实心立方体和线框立方体,立方体 3 的半径为size,size是一个双精度浮点值。 绘制中心位于世界坐标系原点的实心八面体和线框八面体,八面体 的半径为1.0。
显示列表的执行
void glListBase(GLuint offsetValue);
2013-6-27 24
OpenGL中层次模型的实现
多级显示列表
OpenGL支持创建多级显示列表,即在glNewList 和glEndLsit函数对之间允许调用glCallList函数来 执行其他显示列表。 显示列表的删除 void glDeleteLists(GLuint listID, GLsizei range);
26 26
OpenGL中的实体模型函数
GLUT库中的二、三次曲面

绘制实体或线框球面
void glutSolidSphere/glutWireSphere (GLdouble
radius, GLint slices, GLint stacks);

绘制实体或线框圆锥面
void glutSolidCone/glutWireCone (GLdouble radius, GLdouble height, GLint slices, GLint stacks);
2013-6-27
模型绘制 模型观察 颜色模式 光照应用 图像效果增强 位图和图像处理 纹理映射 实时动画 交互技术
4
OpenGL的绘制流程——工作方式
一个完整的窗口系统的OpenGL 图形处理系统的结构为:最底层
应用软件
OpenGL 窗口系统
为图形硬件,第二层为操作系统,
第三层为窗口系统,第四层为 OpenGL,最上面的层为应用软 件。
18
3.5 OpenGL实现拾取操作
设置拾取缓冲区
void glSelectBuffer(GLsizei n,GLunint *buff);
进入选择模式 GLint glRenderMode(GLenum mode);
2013-6-27
19
OpenGL实现拾取操作
名字堆栈操作

初始化名字堆栈(glInitNames)
16
OpenGL实现橡皮筋技术
鼠标实现

鼠标响应函数
glutMouseFunc

鼠标移动相应函数
glutMotionFunc
glutPassiveMotionFunc
2013-6-27 17
OpenGL实现橡皮筋技术
键盘实现

键盘相应函数
glutKeyboardFunc
2013-6-27
OpenGL程序实例——窗口管理


初始化(glutInit )
创建窗口(glutCreateWindow) 设定窗口的显示模式(glutInitDisplayMode)


指定窗口的位置和大小(glutInitWindowPosition和 glutInitWindowSize )
指定窗口的显示内容函数(glutDisplayFunc) 运行框架(glutMainLoop)
OpenGL函数都遵循一个命名约定,即采用以下格式:
<库前缀><根命令><可选的参数个数><可选的参数类型> 例如函数glColor3f(…),gl表示这个函数来自库gl.h, 根命令Color表示该函数用于颜色设定,3f表示这个函数采 用了三个浮点数参数。 符号常量的表示:GL开头,下划线(_)分开,大写。 例如:GL_RGB,GL_POLYGON等
2013-6-27
8
OpenGL的基本语法——数据类型
表2.2 OpenGL的数据类型
OpenGL数据类型 GLbyte GLshort GLint,GLsizei 内部表示法 8位整数 16位整数 32位整数 定义为C类型 signed char short long C字面值后缀 B S L
GLfloat,GLclampf
将一个名字压入堆栈(glPushName)


替换名字堆栈的栈顶元素(glLoadName)
将栈顶元素弹出(glPopName)

2013-6-27
20 20
OpenGL实现拾取操作
设置合适的变换过程
gluPickMatrix(xPick,yPick,widthPick, heightPick,*vp);
void glutSolidTeapot/glutWireTeapot (GLdouble size);
2013-6-27
28 28
OpenGL中的实体模型函数
GLU二次曲面函数

定义一个二次曲面
GLUquadricObj *sphere;

激活二次曲面绘制器
sphere = gluNewQuadric( );
gluDisk(sphere,innerRadius,outerRadius,
slices, stacks);
2013-6-27
30 30
4.3 非规则对象的表示
分形几何 形状语法
基于分数维理论的随机模型
基于物理的模型
粒子系统模型
数据场可视化
2013-6-27 31
为每个图元分配名字并绘制 切换回渲染模式 分析选择缓冲区中的数据
2013-6-27
21 21
3.6 OpenGL中的菜单功能
菜单注册函数
glutCreateMenu(ProcessMenu);
在菜单中加入菜单项
void glutAddMenuEntry(char *name, GLint value);
进行改进,扩展可移植性,形成的一个跨平台开放式图 形编程接口。 目前,OpenGL标准由1992年成立的独立财团OpenGL Architecture Review Board(ARB)以投票方式产生,
并制成规范文档公布。
2013-6-27
3
OpenGL的主要功能

调用OpenGL API函数 变换、光照 光栅化 帧缓存
OpenGL命 令缓冲区
图2.35 一条简化的OpenGL绘制流水线
注意:只有当缓冲区被清空时,缓冲区中的命令和数据才会传递给流水 线的下一个阶段,OpenGL命令才会得到执行。
2013-6-27 6
OpenGL的基本语法——相关库


OpenGL核心库:gl
2013-6-27
13
OpenGL程序实例——绘制图形
刷新窗口的缓冲区
glClear(GL_COLOR_BUFFER_BIT); 设定投影参数(将三维图形投影到显示窗口) glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0); 绘制图形 glRectf(50.0f, 100.0f, 150.0f, 50.0f);
将菜单与某个鼠标按键关联 void glutAttachMenu(button);
2013-6-27 22
第四章
2013-6-27
23
OpenGL中层次模型的实现
显示列表的创建
glNewList( listID, listMode ); glutSolidCube(2.0); …… glEndList();
表2.2 OpenGL的一些常用混合色
混合色 黑 红 绿 黄 蓝 紫 青 深灰 浅灰 棕 南瓜橙 粉红 紫红 白 红色成分(R) 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.25 0.75 0.60 0.98 0.98 0.60 1.0 绿色成分(G) 0.0 0.0 1.0 1.0 0.0 0.0 1.0 0.25 0.75 0.40 0.625 0.04 0.40 1.0 蓝色成分(B) 0.0 0.0 0.0 0.0 1.0 1.0 1.0 0.25 0.75 0.12 0.12 0.70 0.70 1.0
OpenGL实用程序库: glu OpenGL编程辅助库:aux
115个函数
43个函数 31个函数


OpenGL实用程序工具包(OpenGL utility toolkit, GLUT):glut 30多个函数
Windows专用库:wgl 6个函数
2013-6-27
7
OpenGL的基本语法——命名规则
glutSolidDodecahedron( ) 绘制中心位于世界坐标系原点的实心12面体和线框12面体,12面体 3 glutWireDodecahedron( ) 的半径为 。 glutSolidIcosahedron( ) glutWireIcosahedron( )
2013-6-27
绘制中心位于世界坐标系原点的实心20面体和线框20面体,20面体 的半径为1.0。
F
D Ub Us Ui
9
OpenGL程序实例——头文件包含


利用OpenGL实现图形绘制,首先要引入OpenGL核心 库以及其他需要使用的库的头文件。
glut保证了gl.h和glu.h被正确包含。
#include <gl/glut.h>
#include <windows.h>
2013-6-27
10

指定二次曲面的绘制方式
gluQuadricDrawStyle(sphere, GLU_LINE);
2013-6-27
29 29
OpenGL中的实体模型函数

绘制二次曲面
gluSphere(sphere, radius, slices, stacks); gluCylinder(sphere,baseRadius,topRadius, height, slices, stacks);
GLdouble,GLclampd GLubyte,GLboolean GLshort GLuint,GLenum, GLbitfield
2013-6-27
32位浮点数
64位浮点数 8位无符号整数 16位无符号整数 32位无符号整数
floatHale Waihona Puke Baidu
double unsigned char unsigned short unsigned long
相关文档
最新文档