CAD计算机辅助设计技术:OpenGL.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CAD计算机辅助设计技术:OpenGL.ppt

第10章 OpenGL 10.1 简介 10.2 OpenGL基本程序结构 10.3 OpenGL程序设计入门 10.3 OpenGL程序设计入门 OpenGL的状态机制 OpenGL中的图元绘制 坐标变换及其OpenGL实现 应用变换的一个实例 光照处理 1. 点的绘制 OpenGL中点定义为一个方块,在默认状态下,点是屏幕上的一个像素。在OpenGL中,一个点是当作一个 n(2,3,4)维向量来处理的。 OpenGL 中的点是三维的,如果用户设定二维坐标(x,y),则OpenGL在实际计算时处理的点为(x,y,0);对于由四维齐次坐标定义的顶点(x,y,z,w), 在w非零时,齐次顶点(x,y,z,w)对应于三维坐标中的点(x/w,y/w,z/w);若w =0.0,则对应于无穷远处的点。 glVertex {2,3,4}{dfis}{v}(TYPE coords); 例如: glVertex2i(0,1); glVertex3d(-1.0,1.0,3.1425926); glVertex4d(40,-15.9, 0,2); Glfloat v[3]={-1.2f,3.4f,5.6f}; glVertex3fv(v); 以下操作的结果是在屏幕上绘制三个点 : glBegin(GL_POINTS) glVertex3f(1.0,0.0,0.0); glVertex3f(1.0,1.0,0.0); glVertex3f(0.0,1.0,1.0); glEnd(); 2. 线的绘制 与数学意义上两端无限延伸的直线不同,OpenGL的线是数学定义中的线段,用成对的端点来描述。如: glBegin(GL_LINES) glVertex2f(0.0,0.0); glVertex2f(1.0,1.0); glEnd(); 上述操作描述了一条由坐标原点到点(1.0,1.0)的线段。 3. 多边形的绘制 多边形指封闭线段围成的区域。但OpenGL中可以描述的多边形有两点限制:多边形的边除了多边形的顶点外不允许相交,即确保多边形为简单多边形;多边形为凸多边形,即任给多边形的两个内部点,其连线完全在多边形内。 多边形的描述方式如下: glBegin(GL_POLYGON); glVertex*(v0); glVertex*(v1); …….. glVertex*(vn); glEnd(); 其中,*表示glVertex函数的上述任一种组合形式,由多边形顶点v0,v1,…,vn的表示形式而定。 注意:多边形顶点应按一定顺序排列(如逆时针)。 4. 矩形的绘制 由于矩形在几何体构造中出现得比较频繁,所以OpenGL提供了专门的矩形函数: void glRect{dfis}(TYPE x1, TYPE y1, TYPE x2, TYPE y2); void glRect{dfis}v (TYPE *v1, TYPE *v2); 矩阵的左上、右下角点坐标分别为(x1,y1)和(x2,y2),或者用数组指针v1、v2表示。用上述函数描述的矩形位于z=0平面内,并且各边分别平行于x、y轴。但注意:经过坐标变换之后,这些特性可能改变。 例10.2 基本的图元绘制程序 为简单起见,我们仅改变例10.1中的绘制函数void CALLBACK display(void)如下: void CALLBACK display(void) { glClear(GL_COLOR_BUFFER_BIT); //将颜色缓存清为glClearColor命令所设置的颜色,即背景色 ? glColor4f(1.0,1.0,1.0,1.0); //选颜色(R,G,B) glPointSize(6.0); //设置点的大小 glBegin(GL_POINTS); //在屏幕上绘制三个点 glVertex3f(0.1,0.2,0.0); glVertex3f(0.2,0.7,0.0); glVertex3f(0.5,0.8,0.0); glEnd(); glBegin(GL_LINES); //在屏幕上绘制一条线段 glVertex2f(0.0,0.4); glVertex2f(-0.3,0.8); glEnd(); ? glBegin(GL_POLYGON); //在屏幕上绘制一个四边形 glVertex2f(-0.6,0.0); glVertex2f(-0.4,0.0); glVertex2f(-0.4,0.3

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档