本次笔记对应nehe lesson 3,根据nehe教程的内容,补充一些顶点颜色的知识
在nehe opengl lesson3中,针对lesson2的两个图元(opengl一共有10种图元,opengl es减少到了只有七种)
点:GL_POINTS(注意复数,GL_POINT也是定义的,但是不是定义图元)
线:GL_LINES(同样注意复数),GL_LINE_LOOP,GL_LINE_STRIP
三角:GL_TRIANGLES(复数)GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN
------------------------------------------分割线,上面是opengl和opengl-es共有的,下面是opengl才有的-------------------------
四边形:GL_QUADS(复),GL_QUAD_STRIP (有人认为quad是绘制矩形的,这是错误的!它是绘制四边形的,可以绘制菱形,梯形,不规则四边形,甚至是空间上4点不公面的四边形)
多边形:GL_POLYGON
在opengl-es中去掉下面分割线3种,请大家牢记哦。去掉的原因很简单,因为下面三个性能不行,嵌入式设备性能有限,而且可以通过三角形扇或者三角形带模拟四边形,四边形带,多边形。
然后说一下图元颜色,在没用采用纹理和光照前(如果你初学还不知道什么是纹理的话先不求甚解一下),图元颜色是基于顶点颜色的。按照不同的着色模式,图元内部颜色也不一样。在opengl 1.x中,我们可以使用的着色模式就两种,glShadeModel(GL_FLAT)或者glShadeModel(GL_SMOOTH)。下面这张图片显示了分别使用quad和triangle_fan绘制矩形,分别采用gl_flat和gl_smooth着色方式的结果
可以看到,在gl_flat模式中,图元颜色是一致的(第三个triangle_fan是2个三角形组成,每个三角形的颜色是一样的),具体图元颜色采用哪个顶点的颜色,在opengl文档里面都有详细描述。
而在gl_smooth,顶点颜色就是你设的颜色,图元内部颜色是通过双线型插值的方式获取的,大家可以wiki或者google中查到很多资料。
好啦,nehe opengl lesson3的补充就到这了,有啥问题大家可以一起讨论