【OpenGL】画一个带渲染效果的多边形

来源:互联网 发布:淘宝网开店必备技巧 编辑:程序博客网 时间:2024/06/05 03:49

代码略。

运行效果:


本学期图形学的第一个实验,总体来说比较简单,但还是学到了一些东西,首先是glBegin(GL_TRIANGLE_FAN);中的GL_TRIANGLE_FAN这个参数的作用是绘制一组相连的三角形,三角形由glBegin(GL_TRIANGLE_FAN);......    glEnd();之间的顶点坐标所确定。进一步查阅资料,对OpenGL绘制多边形的几个重要参数做如下小结:

参数名

说明

GL_POLYGON

将所给的点顺次连接

GL_TRIANGLES

每三个点进行一次连接,得到的是一个个独立的三角形

GL_TRIANGLE_STRIP

第n点与第(n-1)点、第(n-2)点连接,得到的是一组三角形面片(n>=3)

GL_TRIANGLE_FAN

第n点开始和第(n-1)点、第1点连接,得到的是一组三角形面片(n>=3)

实验过程中程序显示出了一些很奇怪的形状,后来发现错误原因是没有加上glVertex2f(0,0);这行代码,这是没有完全理解上面列出的参数的意义造成的。如果多画这个点,那么使用GL_POLYGON或者GL_TRIANGLE_FAN其实都可以完成任务。

其次是学了函数glColor3f()的使用方法,它的三个参数对应了rgb值,取值范围从0到1.0,常用的颜色如下:

取值

对应颜色

0.0, 0.0, 0.0

1.0, 1.0, 1.0

1.0, 0.0, 0.0

0.0, 1.0, 0.0

绿

0.0, 0.0, 1.0

1.0, 1.0, 0.0

1.0, 0.0, 1.0

0.0, 1.0, 1.0



目前对这个函数的了解还不够深,它的作用应该就是从给定的点开始对某个区域进行渲染,在这个例子里我似乎理解了为什么书上要用“渲染”而不用“着色”这个词。OpenGL里的“渲染”看上去就像中国的水墨画上色一样,毛笔点一点在宣纸上,颜色就(慢慢)有层次感地把一个区域给覆盖掉了,这里的上色过程不像是刷油漆,一下子就盖掉那种,否则就不会有实验里的渐变效果了。随着学习的深入应该会对内部机制有深层次的认识,这里就先保留这个好奇心吧。