电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

opengl编程指南002状态管理和绘制几何物体

  • 资源ID:471824218       资源大小:33KB        全文页数:6页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

opengl编程指南002状态管理和绘制几何物体

第二章状态管理和绘制几何物体绘图工具箱清除窗口在计算机中,保存图片的内存通常被计算机所绘制的前一幅图像所填满,因此在绘制新场景之前需要把它清除为某种背景颜色。至于应该使用那种背景颜色,则取决于应用程序本身。我们还必须知道像素颜色是如何存储在称为位平面的图形硬件中的。存储的方式有两种:可以把像素颜色的红、绿、蓝和alpha值直接存储在位平面中;或者可以存储一个颜色索引值,用它来引用颜色查找表中的一个项目。RGBA颜色显示模式更常用一些。例如,下面这两行代码把一个RGBA模式的窗口清除为黑色:glClearColor(0.0,0.0,0.0,0.0);glClear(GL_COLOR_BUFFER_BIT);第一行代码把清除颜色设置为黑色,第二行代码把整个窗口清除为当前的清除颜色GL_COLOR_BUFFER_BIT清除颜色缓冲区GL_DEPTH_BUFFER_BIT清除深度缓冲区GL_ACCUM_BUFFER_BIT清除累积缓冲区GL_STENCIL_BUFFER_BIT清除模版缓冲区制定颜色一般而言,OpenGL程序员首先设置颜色或颜色方案,然后再绘制物体。为了设置颜色,可以使用glColor3f()函数。它接受三个参数,它们都是范围在0.0到1.0之间的浮点数,分别表示颜色的红、绿和蓝的成分。glColor3f(0.0,0.0,0.0)黑色glColor3f(1.0,0.0,0.0)红色glColor3f(0.0,1.0,0.0)绿色glColor3f(1.0,1.0,0.0)黄色glColor3f(0.0,0.0,1.0)蓝色glColor3f(1.0,0.0,1.0)洋红色glColor3f(0.0,1.0,1.0)青色glColor3f(1.0,1.0,1.0)白色强制完成绘图操作glFlush()函数,完成强制绘图操作坐标系统工具箱无论是刚打开窗口的时候,还是在以后移动窗口或者改变窗口大小的时候,窗口系统都会发送一个事件来通知你。如果使用的是GLUT,它会自动产生通知,并且在glutReshapeFunc()中注册的那个函数将会被调用。必须注册一个回调函数,完成下列这些任务:·重新建立一个矩形区域,把它作为新的渲染画布·定义一个用于绘制物体的坐标系统void reshape(int w,int h)glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0,(GLdouble)w,0.0,(GLdouble)h);在系统内部,GLUT向这个函数传递两个参数:width和height,它们表示这个新的(或经过移动的,或改变大小的)窗口的宽度和高度(以像素为单位)。glViewport()函数调整用于绘图的像素矩形,使它占据整个新窗口。接下来的3行代码调整用于绘图的坐标系统,使左下角的坐标是(0,0),右上角的坐标是(w,h)描述点、直线和多边形点点可以用一组称为顶点的浮点数来表示直线直线这个术语表示一段线段,而不是数学意义上在两边无限延伸的直线多边形多边形是由单闭合的线段循环包围的区域矩形OpenGL提供了填充矩形图元函数glRect*()指定顶点在OpenGL中,所有的几何物体最终都被描述成一组有序的顶点。可以使用glVertex*()函数来指定顶点。OpenGL几何绘图图元把一组顶点放在一对glBegin()和glEnd()之间,传递给glBegin()的参数决定了由这些顶点所构建的几何图元的类型GL_POINTS单个的点GL_LINES 一对顶点被解释为一条直线段GL_LINE_STRIP 一系列的连接直线段GL_LINE_LOOP 和上面相同,但第一个顶点和最后一个顶点彼此相连GL_TRIANGLES 三个顶点被解释为一个三角形GL_TRIANGLE_STRIP 三角形的连接串GL_TRIANGLE_FAN 连接成扇形的三角形系列GL_QUADS 四个顶点被解释为一个四边形GL_QUAD_STRIP 四边形的连接串GL_POLYGON 一个简单的凸多边形的边界使用glBegin()和glEnd()的限制glVertex*() 设置顶点坐标glColor*()设置RGBA颜色glIndex*() 设置颜色索引glSecondaryColor*() 设置纹理应用后的辅助颜色glNormal*() 设置法线向量坐标glMaterial*()设置材料属性glFogCoord*()设置雾坐标glTexCoord*()设置纹理坐标glMultiTexCoord*()为多重纹理设置纹理坐标glEdgeFlag*() 控制边界的绘制glArrayElement() 提取顶点数组数据glEvalCoord*(),glEvalPoint*() 生成坐标glCallList(),glCallLists() 执行显示列表基本状态管理器OpenGL维护许多状态和状态变量,物体在进行渲染时可能会使用光照、纹理、隐藏表面消除、勿以及其他影响物体外观的状态。在默认情况下,这些状态的大部分一开始是处于不活动状态的。激动这些状态可能会有较大的开销。但是,图像的指向可以得到明显程度的提高,看上去更有真实感,这归功于增强的图形功能。为了打开或者关闭这些状态,可以使用下面这两个简单的函数:Void glEnable(GLenum cap);Void glDisable(GLenum cap);还可以查询一个状态当前是处于打开还是关闭状态GLboolean glIsEnabled(GLenum capability)根据被查询的状态当前处于启动还是禁用状态,返回GL_TRUE或GL_FALSE显示点、直线和多边形点的细节为了控制被渲染的点的大小,可以使用glPointSize()函数,并在参数中提供一个值,表示所希望的点的大小(以像素作为参数)直线的细节直线的宽度glLineWidth()用于设置直线的宽度,width参数必须大于0.0,在默认情况下是1.0点画线为了窗机爱你点画线,可以使用glLineStipple()函数定义点画线模式,然后用glEnable()函数启用直线点画线功能:glLineStipple(1,0x3F07);glEnable(GL_LINE_STIPPLE);此例中,模式为0x3F07(二进制形式为0011111100000111),它所画出来的直线是这样的:先是连续绘制3个像素,然后连续5个像素留空,然后再连续绘制6个像素,最后2个像素留空(注意,首先开始的是低位)。如果前一个参数不是1而是2,那么这个模式便扩展为:绘制6个像素,留空10个像素,绘制12个像素和留空4个像素多边形的细节多边形具有两个面:正面和背面。取决于哪一面将面对观察者,它们可能会被渲染成不同的样子。这使观察者能够获得实心物体正反两面截然不同的剖面视图。在默认情况下,多边形的正面和背面是按照相同的方式绘制的。为了更改这个行为,或者只绘制它的轮廓或顶点,可以使用glPolygonMode()函数。void glPolygonMode(GLenum face,GLenum mode);控制一个多边形的正面和背面的绘图模式,face参数可以是GL_FRONT_AND_BACK、GL_FRONT或GL_BACK。mode参数可以是GL_POINT、GL_LINE或GL_FILL,表示多边形应该被画成点、轮廓还是填充形式。在默认情况下,多边形的正面和背面都被画成填充形式。例如,可以通过下面这两个函数调用,把正面画成填充形式,把背面画成轮廓形式:glPolygonMode(GL_FRONT,GL_FILL);glPolygonMode(GL_BACK,GL_LINE);按照约定,顶点以逆时针顺序出现在屏幕上的多边形称为“正面”可以使用glFrontFace()函数,交换OpenGL的正面和背面的概念。glCullFace()函数的功能为剔除,其参数为GL_BACK、GL_FRONT或者GL_FRONT_AND_BACK。同时调用参数为GL_CULL_FACE的glEnable()函数点画多边形在默认情况下,填充多边形是一种实心模式绘制的。此外,它们还可以使用一种32位*32位的窗口对齐的点画模式。可以使用glPolygonStipple()函数指定多边形点画模式。除了定义当前多边形点画模式外,还必须启用多边形点画功能:glEnable(GL_POLYGON_STIOOLE);标记多边形的边界边OpenGL只能够渲染凸多边形,因此,为了绘制凹多边形,通常将它们分解成几个凸多边形。这其中,就涉及到了边界边绘制的问题。此时,可以使用glEdgeFlag*()函数手工控制边界标志。接受两个参数,GL_TRUE则该点为边界边的起点,GL_FALSE则改点不是边界边的起点。法线向量glNormal*()函数,把当前的法线设置为这个函数的参数所传递的值。glVertex*()函数的调用就把当前法线向量分配给它所指定的顶点。每个顶点常常具有不同的法线,因此需要交替调用这两个函数。由于法线向量只表示方向,因此它的长度是无关紧要的。可以把法线指定为任意长度,但在执行光照计算之前,它的长度会边转换为1.让OpenGL自动对法线向量进行规范化,可以调用glEnable(GL_NORMALIZE)如果提供了单位长度的法线,并且只进行了均匀的缩放,可以使用glEnable(GL_RESCALE_NORMAL)用一个i额常量因子对法线进行缩放,使它在变换之后恢复到单位长度。后者比前者开销小顶点数组使用顶点数组对几何图形进行渲染需要3个步骤:1. 激活(启用)最多可达8个的数组,每个用于存储不同类型的数据:顶点坐标、表面法线、RGBA颜色、辅助颜色、颜色索引、雾坐标、纹理坐标以及多边形的边界坐标。2. 把数据放入数组中。数组是通过指向它们的内存位置的指针进行访问的。在客户机-服务器模型中,数据存储在客户机的地址空间中。3. 用这些数据绘制几何图形。OpenGL通过对指针进行解引用,从所有被激活的数组中获取数据。在客户机-服务器模型中,数据被传输到服务器的地址空间中。有3种方式可以完成这个任务:·访问单独的数组元素(随机存取)·创建一个单独数组元素的列表(系统存取)·线性地处理数组元素步骤1:启用数组第一个步骤是调用glEnableClientState()函数,激活被选择的数组。该函数可以接受如下八个参数:GL_VERTEX_ARRAY、GL_COLOR_ARRAY、GL_SECONDARY_COLOR_ARRAY、GL_INDEX_ARRAY、GL_NORMAL_ARRAY、GL_FOG_COORDINATE_ARRAY、GL_TEXTURE_COORD_ARRAY和GL_EDGE_FLAG_ARRAY步骤2:指定数组的数据我们可以通过一种简单的方法,用一条命令指定客户空间中的一个数组。共有8个不同的函数可以用来指定数组,每个函数用于指定一个不同类型的数组。另外,还有一个函数可以一次指定客户空间的几个数组,它们均来源于一个混合数组。glVertexPointer()、gl*Pointer()例子为varray.cpp步骤3:解引用和渲染、

注意事项

本文(opengl编程指南002状态管理和绘制几何物体)为本站会员(pu****.1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.