- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]5基本图形生成算法
计算机辅助设计及图形学第5讲 基本图形生成 华中科技大学CAD中心 吴义忠cad.wyz@hust.edu.cn 主要内容 5.1 基本几何定义描述 5.2 直线生成算法 直线绘制程序演示 见Test1.vcprj 圆弧生成算法 见Test1.vcprj 字符 点阵字符 矢量字符 5.5 GDI下图元生成 CDC类下(见MSDN) Line-output functions: Arc, Moveto,LineTo, Polyline, PolyBezier, … Ellipse and polygon functions: Ellipse, Rectangle, Polygon, … Text functions:DrawText, TextOut Font Functions Bitmap functions: SetPixel … 5.6 OpenGL下图元输出 指定坐标系统范围 常用的glBegin画图:点、线、多边形 顶点数组的使用 显示列表的应用 文本(字符)输出 指定坐标系统范围 void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D (Xmin, Xmax, Ymin, Ymax); } 常用绘图glBegin/glEnd void glBegin(GLenum mode); void glEnd(void); mode 颜色/顶点/法矢给定 顶点数组的使用:使用方便,访问快捷 static GLint vertices[] = {25, 25, 100, 325,175, 25, 175, 325, 250, 25, 325, 325}; static GLfloat colors[] = {1.0, 0.2, 0.2, 0.2, 0.2, 1.0, 0.8, 1.0, 0.2, 0.75, 0.75, 0.75, 0.35, 0.35, 0.35, 0.5, 0.5, 0.5}; glEnableClientState (GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glColorPointer(3, GL_FLOAT, 0, colors); glVertexPointer(2, GL_INT, 0, vertices); glBegin(GL_TRIANGLES); glArrayElement(2); //对所有的顶点数组起作用 glArrayElement(3); glArrayElement(5); glEnd(); 绘制立方体 static GLint vertices[] = {0,0,0, 0,0,1,0,1,0,1,0,0,0,1,1,1,0,1,1,1,0,1,1,1}; static GLfloat colors[] = {1.0, 0.2, 0.2, 0.2, 0.2, 1.0, 0.8, 1.0, 0.2, 0.75, 0.75, 0.75, 0.35, 0.35, 0.35, 0.5, 0.5, 0.5}; glEnableClientState (GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glColorPointer(3, GL_FLOAT, 0, colors); glVertexPointer(3, GL_INT, 0, vertices); static GLubyte frontIndices[] = {4, 5, 6, 7}; static GLubyte rightIndices[] = {1, 2, 6, 5}; static GLubyte bottomIndices[] = {0, 1, 5, 4}; static GLubyte backIndices[] = {0, 3, 2, 1}; static GLubyte leftIndices[] = {0, 4, 7, 3}; static GLubyte topIndices[] = {2, 3, 7, 6}; glDrawElements(GL_QUADS, 4, GL_UNSIGNED_BYTE, frontIndices); glDrawElements(GL_QUADS, 4, GL_UNSIGNED_BYTE, rightIndices); glDrawElements
文档评论(0)