OpenGL学习笔记(7)多边形绘制
2010-10-18 12:43
531 查看
绘制模式
在绘制多边形时除了默认的填充方式,还可以使用点和线使用glPolygonMode函数来设置模式
三种不同模式下的绘图
GL_FILL
GL_LINE
GL_POINT
多边形的两面
如果以顺时针绘制则是反面,逆时针绘制则是正面// 设置正面为填充模式 glPolygonMode(GL_FRONT, GL_FILL); // 设置反面为线形模式 glPolygonMode(GL_BACK, GL_LINE); // 设置逆时针绘制一个正方形 glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f(0.0f, -0.5f); glVertex2f(0.0f, 0.0f); glVertex2f(-0.5f, 0.0f); glEnd(); // 设置顺时针绘制一个正方形 glBegin(GL_POLYGON); glVertex2f(0.0f, 0.0f); glVertex2f(0.0f, 0.5f); glVertex2f(0.5f, 0.5f); glVertex2f(0.5f, 0.0f); glEnd();
显示效果如下
切换正反面
可以使用glFrontFace函数来调换正面与反面的概念glFrontFace(GL_CCW); // 设置CCW方向为“正面”,CCW即CounterClockWise,逆时针
glFrontFace(GL_CW); // 设置CW方向为“正面”,CW即ClockWise,顺时针
下面为使用glFrontFace(GL_CW)的效果
剔除多边形表面
下面的话转的在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡。如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图形的效率。在这种时候,可以将不必要的面剔除。
首先,使用glEnable(GL_CULL_FACE);来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之)
然后,使用glCullFace来进行剔除。
glCullFace的参数可以是GL_FRONT,GL_BACK或者GL_FRONT_AND_BACK,分别表示剔除正面、剔除反面、剔除正反两面的多边形。
注意:剔除功能只影响多边形,而对点和直线无影响。例如,使用glCullFace(GL_FRONT_AND_BACK)后,所有的多边形都将被剔除,所以看见的就只有点和直线。
着色模型
即颜色可以渐变色,如默认情况下void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.0); glBegin(GL_POLYGON); glVertex2f(120,100); glVertex2f(280,100); glVertex2f(150,240); glEnd(); glFlush (); }
使用glShadeModel函数指定着色模型,默认为GL_FLAT即单色,GL_SMOOTH则可以使得颜色平滑,即渐变色
GL_SMOOTH模式
void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0, 0.0, 0.0); glBegin(GL_POLYGON); glVertex2f(120,100); glColor3f (1.0, 1.0, 0.0); glVertex2f(280,100); glColor3f (0.0, 1.0, 1.0); glVertex2f(150,240); glEnd(); glFlush (); }
如下图
相关文章推荐
- OpenGL学习笔记 (2) —— 绘制多边形
- OpenGL学习笔记(7)多边形绘制
- OpenGL学习笔记()多边形绘制-cullface
- opengl学习笔记(四)——绘制简单多边形
- opengl学习笔记(三)-点和线段的绘制
- OpenGL 学习笔记(3)绘制几何物体
- OpenGL学习笔记--绘制图元
- 【OpenGL 学习笔记03】点画多边形
- LearnOpenGL学习笔记2:绘制基础图形
- OpenGL2.0学习笔记【二】——(第二章)矩形的绘制
- opengl学习笔记——状态管理和绘制几何物体
- opengl es3.0游戏开发学习笔记1-绘制旋转的三角形
- opengl学习小笔记(3)直线段的绘制之DDA 算法
- OpenGL_Qt学习笔记之_04(3D图形的绘制和旋转)
- LearnOpenGL学习笔记2:绘制基础图形
- OpenGL学习笔记(一):状态管理与绘制
- OpenGL学习(绘制非凸多边形)
- OpenGL 学习笔记(3)绘制几何物体
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- OpenGL学习笔记之绘制图元