计算机图形学第六章OpenGL基本图元的绘制.ppt
《计算机图形学第六章OpenGL基本图元的绘制.ppt》由会员分享,可在线阅读,更多相关《计算机图形学第六章OpenGL基本图元的绘制.ppt(46页珍藏版)》请在三一文库上搜索。
1、Lecture 6 OpenGL基本图元的绘制,概述,图元的种类:点、线段、多边形、矩形 OpenGL中所有的实体最终都可采用一系列有序的顶点描述。 二维图形是三维图形的特殊情况(z分量为0),在三维顶点绘制指令中,如果用户设定二维坐标(x, y),OpenGL就会自动令z=0 OpenGL提供的描述点、线、多边形的绘制机制。必须通过glBegin()和glEnd()函数配对来完成.,OpenGL的程序结构(6_1),auxInitDisplayMode(AUX_SINGLE|AUX_RGBA)设置窗口显示模式为RGBA方式,即彩色方式,并且图形缓存为单缓存(SINGLE BUFFER)。 a
2、uxInitPosition(0,0,500,500)定义窗口的初始位置,前两个参数(0,0)为窗口的左上角点的屏幕坐标,后两个参数(500,500)为窗口的宽度和高度。 auxInitWindow(“AUX_SAMPLE“)是窗口初始化,字符参数是窗口名称。,OpenGL的程序结构(6_1),auxReshapeFunc()和auxMainLoop(),参数都是一个函数指针,指向的都是回调函数(回调函数定义用CALLBACK说明)。 auxReshapeFunc()是窗口形状重定函数,参数指针指向函数myReshape(),它的两个参数就是窗口的 新宽度和新高度。然后用glViewport(
3、0,0,w,h)重定视口,并且在新视口内重新定义投影矩阵。,AUX库显示坐标范围(6_2),设定视区的函数,即指定一个显示窗口的范围(程序6_2) void CALLBACK Reshape(GLsizei width,GLsizei height) glViewport(0,0,width,height); auxReshapeFunc(myReshape); 窗口形状重定函数,参数指针指向函数myReshape(),它的两个参数就是窗口的新宽度和新高度。 auxInitPosition(0,0,500,500);初始化显示窗口的大小,AUX库显示坐标范围,如果使用auxReshapeFun
4、c(myReshape);设定了窗口形状重定函数。则显示窗口的坐标范围为11。其绘图像的过程是把11范围的坐标点映射到屏幕坐标。 如果未使用auxReshapeFunc(myReshape);设定窗口形状重定函数。则显示窗口的坐标范围为实际窗口的尺寸。,OpenGL的状态机制,OpenGL的绘图方式是由一系列的状态决定的。如果设置了一种状态或模式而不改变它,OpenGL在绘图的过程中将一直保持这种状态或模式。 例如: Void myinit(void) glClearColor(0.0,0.0,0.0,0.0); ,OpenGL的状态机制,其中函数glClearColor(0.0,0.0,0.
5、0,0.0)将视口背景色清为黑色,如果不改变这种状态,视口背景色将一直保持黑色。其他状态有: 模型变换 线及多边形的填充图案 多边形绘制模式 光源的位置及特性 被绘制物体的材质等,基于MFC的OpenGL编程(6_3),OpenGL辅助函数库提供了一些窗口和事件管理函数,但提供的功能有限。而MFC却提供了大量对窗口和事件管理和控制的函数。 图形操作描述 像素格式,图形操作描述,每一个Windows程序都必须设置设备描述表DC(Device Contexts),DC包含了窗口上显示图形的诸多信息,例如:指定绘图模式、画笔和刷子的颜色。OpenGL的Windows程序也必须使用DC。 OpenGL
6、还必须处理专用的绘图描述表RC(Rendering Contexts),一个OpenGL应用程序必须创建一个绘图描述表,然后启动它,最后在所定义的窗口内按常规方式调用OpenGL函数绘图。,图形操作描述,首先得到设备描述表DC(设备上下文): m_pDC = new CClientDC(this); 创建绘图描述表/Create rendering content hrc = wglCreateContext(m_pDC-GetSafeHdc();,图形操作描述,绘图: 设置一个线程的当前绘图描述表 wglMakeCurrent(m_pDC-GetSafeHdc(), hrc); DrawSc
7、ene(); wglGetCurrentDC()得到当前设备描述表 SwapBuffers(wglGetCurrentDC(); 释放绘图描述表所使用的设备描述表 wglMakeCurrent(m_pDC-GetSafeHdc(), NULL);,像素格式,在创建一个绘图描述表之前,首先必须设置设备描述表的像素格式,像素格式含有设备绘图界面的属性: 颜色模式(RGBA模式/颜色索引模式) 单/双缓冲区 颜色、深度、累加和模板缓冲区所用的位数,像素格式,PIXELFORMATDESCRIPTOR pfd = sizeof(PIXELFORMATDESCRIPTOR), / 该结构所占空间 1,
8、/ 版本号,当前为1 PFD_DRAW_TO_WINDOW | / 支持windows的屏幕绘图 PFD_SUPPORT_OPENGL | / 支持OpenGL PFD_DOUBLEBUFFER, / 支持双缓存 PFD_TYPE_RGBA, / 支持RGBA 颜色模式 24, / 24位颜色深度 0, 0, 0, 0, 0, 0, / 红绿蓝颜色分量和偏移量所占位数相同 0, / 无alpha分量 0, /无alpha偏移量 0, / 无累加缓冲区 0, 0, 0, 0, /忽略累加缓冲区的个分量 32, / 32位的深度缓冲区 0, / 无模板缓冲区 0, / 无辅助缓冲区 PFD_MAI
9、N_PLANE, / WIN98、NT下只能是PFD_MAIN_PLANE 0, / 保留,当前为0 0, 0, 0 / 忽略覆盖层的屏蔽 ;,像素格式,设定像素格式后,进行如下的操作: int pixelformat; m_pDC = new CClientDC(this); 使用设备描述表选择一个像素格式 pixelformat = ChoosePixelFormat(m_pDC-GetSafeHdc(), ,定义顶点序列,void glBegin(GLenum mode) 功能:描述一个几何图元顶点序列的开始。 参数说明: mode:指出图元的类型。 void glEnd (void)
10、功能:标记顶点序列的结束。 函数glVertex( ) 可定义一个点 。,定义顶点序列,例如:绘制一个多边形边界(POLYGON): glBegin(GL_POLYGON) glVertex2f(0.0,0.0); / Vertex 0 givedex2f(0.0,3.0); / Vertex 1 glVedex2f(3.0,3.0); / Vertex 2 alVenex2f(4.0,1.5): / Vertex 3 givedex2f(3.0,0.0); / Vertex 4 glVertex2f(0.0,0.0); / Vertex 0 glEnd();,几何图元类型和说明,几何图元类型
11、和说明,几何图元类型(6_4),几何图元类型,点,GL_POINTS:N个顶点V0, V1, Vn-1构成 离散的顶点序列。 在OpenGL中一个点是当作一个n维(n=2,3,4)向量来处理的。 glVertex2f(2.0, 1.0)指定一个顶点的坐标(2.0, 1.0),则在实际计算中OpnGL是处理点(2.0, 1.0, 0.0) glVertex2,3,4sifd(V)(TYPE coords) 参数说明: coords:用一个数组或用齐次坐标(x, y, z, w)赋顶点坐标,画点的例程,glBegin(GL_POINTS); glVertex3f(0.0,0.0,0.0) glVe
12、rtex3f(50.0,50.0,50.0) glEND(); glBegin的参数GL_POINTS告诉OpenGL,下面的顶点应被解释并绘制为点,它们将转换为两个具体的点,并被绘制出来,其颜色为缺省值点的属性。,点的大小,OpenGL提供了可以控制点的大小的函数。点大小的默认值是一个像素。可以用函数glPointsize()修改这个值,以设定点的大小: void glPointsize(GLfloat size),直线,GL_LINES:N个顶点V0, V1, Vn-1每2个一组画线段,即V0-V1,V2-V3,共计画N/2条线。 若N为奇数,则第N个点Vn-1每忽略。,直线的绘制,下面的
13、代码在两个点(0,0,0)和(50,50,50)之间画一根直线。 glBegin(GL_LINES); glVertex3f(0.0,0.0,0.0) glVertex3f(50.0,50.0,50.0) glEND(); 注意:在OpenGL中,参数GL_LINES对每两个指定的顶点画一根直线。如果GL_LINES指定奇数个顶点,那么最后一个顶点将会被忽略。,折线,GL_LINE_STRIP:画一折线: V0-V1,V1-V2 ,V2-V3 ,Vn-2-Vn-1 ,共计N-1条线段。 注意: (1)最后一点与第一点之间不连线,即不形成回路。但当最后一点与第一点之间重合时,显示效果等同于回路效
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 第六 OpenGL 基本 绘制
链接地址:https://www.31doc.com/p-2097949.html