NEHE阅读笔记-2D多边形
2016-01-09 17:06
232 查看
1.绘制过程
值得注意的是整个绘画过程的参考点是通过glTranslatef来修改达到的
2.染色过程
通过分析着色代码我们知道,GL是逐行渲染图形的
3.旋转图形坐标
旋转坐标时,我们记得要重置坐标模型!
忘记重置坐标模型时,就会以之前的模型绘制
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer glLoadIdentity(); // Reset The Current Modelview Matrix //开始GL绘画部分 glTranslatef(-1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glBegin(GL_TRIANGLES); // 绘制三角形 (x,y,z)均相对于光标 glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (x,y,z)均相对于光标 glVertex3f(-1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glEnd(); glTranslatef(3.0f,0.0f,0.0f); // 相对当前的位子移动光标 glBegin(GL_QUADS); // 绘制四角形 (x,y,z)均相对于光标 glVertex3f( -1.0f, 1.0f, 0.0f); // 左上 (x,y,z)均相对于光标 glVertex3f( 1.0f, 1.0f, 0.0f); // 右上 (x,y,z)均相对于光标 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glVertex3f( -1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glEnd(); //结束GL绘画部分 return TRUE; // Everything Went OK }
值得注意的是整个绘画过程的参考点是通过glTranslatef来修改达到的
2.染色过程
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer glLoadIdentity(); // Reset The Current Modelview Matrix //开始GL绘画部分 glTranslatef(-1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glBegin(GL_TRIANGLES); // 绘制三角形 (x,y,z)均相对于光标 glColor3f(1.0f,0.0f,0.0f); // 设置着色 glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (x,y,z)均相对于光标 glColor3f(0.0f,1.0f,0.0f); // 设置着色 glVertex3f(-1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glColor3f(0.0f,0.0f,1.0f); // 设置着色 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glEnd(); glTranslatef(3.0f,0.0f,0.0f); // 相对当前的位子移动光标 glBegin(GL_QUADS); // 绘制四角形 (x,y,z)均相对于光标 glColor3f(0.5f,0.5f,1.0f); glVertex3f( -1.0f, 1.0f, 0.0f); // 左上 (x,y,z)均相对于光标 glVertex3f( 1.0f, 1.0f, 0.0f); // 右上 (x,y,z)均相对于光标 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glVertex3f( -1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glEnd(); //结束GL绘画部分 return TRUE; // Everything Went OK }
通过分析着色代码我们知道,GL是逐行渲染图形的
3.旋转图形坐标
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer glLoadIdentity(); // Reset The Current Modelview Matrix //开始GL绘画部分 glTranslatef(-1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glRotatef(55.0f,0.0f,1.0f,0.0f); glBegin(GL_TRIANGLES); // 绘制三角形 (x,y,z)均相对于光标 glColor3f(1.0f,0.0f,0.0f); // 设置着色 glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (x,y,z)均相对于光标 glColor3f(0.0f,1.0f,0.0f); // 设置着色 glVertex3f(-1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glColor3f(0.0f,0.0f,1.0f); // 设置着色 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glEnd(); glLoadIdentity(); // 重置当前的模型视图矩阵,"光标"回到中间 glTranslatef(1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glRotatef(55.0f,0.0f,0.0f,1.0f); glBegin(GL_QUADS); // 绘制四角形 (x,y,z)均相对于光标 glColor3f(0.5f,0.5f,1.0f); glVertex3f( -1.0f, 1.0f, 0.0f); // 左上 (x,y,z)均相对于光标 glVertex3f( 1.0f, 1.0f, 0.0f); // 右上 (x,y,z)均相对于光标 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glVertex3f( -1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glEnd(); //结束GL绘画部分 return TRUE; // Everything Went OK }
旋转坐标时,我们记得要重置坐标模型!
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer glLoadIdentity(); // Reset The Current Modelview Matrix //开始GL绘画部分 glTranslatef(-1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glRotatef(55.0f,0.0f,1.0f,0.0f); glBegin(GL_TRIANGLES); // 绘制三角形 (x,y,z)均相对于光标 glColor3f(1.0f,0.0f,0.0f); // 设置着色 glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (x,y,z)均相对于光标 glColor3f(0.0f,1.0f,0.0f); // 设置着色 glVertex3f(-1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glColor3f(0.0f,0.0f,1.0f); // 设置着色 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glEnd(); glLoadIdentity(); // 重置当前的模型视图矩阵,"光标"回到中间 glTranslatef(1.5f,0.0f,-6.0f); // 相对当前的位子移动光标 glRotatef(55.0f,0.0f,0.0f,1.0f); glBegin(GL_QUADS); // 绘制四角形 (x,y,z)均相对于光标 glColor3f(0.5f,0.5f,1.0f); glVertex3f( -1.0f, 1.0f, 0.0f); // 左上 (x,y,z)均相对于光标 glVertex3f( 1.0f, 1.0f, 0.0f); // 右上 (x,y,z)均相对于光标 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glVertex3f( -1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glEnd(); //重置坐标模型 glLoadIdentity(); glTranslatef(0.0f,0.0f,-12.0f); glBegin(GL_TRIANGLES); // 绘制三角形 (x,y,z)均相对于光标 glColor3f(1.0f,0.0f,0.0f); // 设置着色 glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (x,y,z)均相对于光标 glColor3f(0.0f,1.0f,0.0f); // 设置着色 glVertex3f(-1.0f,-1.0f, 0.0f); // 左下 (x,y,z)均相对于光标 glColor3f(0.0f,0.0f,1.0f); // 设置着色 glVertex3f( 1.0f,-1.0f, 0.0f); // 右下 (x,y,z)均相对于光标 glEnd(); //结束GL绘画部分 return TRUE; // Everything Went OK }
忘记重置坐标模型时,就会以之前的模型绘制
相关文章推荐
- JavaScript运行原理解析
- wpf配置控件格式
- IOS开发系列——UIView专题之二:动画篇【整理,部分原创】
- 使用SharedPreferences保存数据
- OC复习
- C基础--C语言的数组
- 用Notepad++写的java程序加注释报错问题
- js angularjs 杂记
- android值radioGroup实现多行多列单选框--动态加入
- 计算几何入门4--poj2187Beauty Contest
- C++类中的常量
- JMS - ConnectionMetaData
- jdbc 学习总结
- 用SSH做采购系统遇到的问题
- hdu 2562 奇偶位互换
- 6to4 自动隧道技术
- V210 UART TX 流程
- oracle表空间
- ORA-27603: Cell storage I/O error
- 关于NJKWebViewProgress的纯代码编写。