您的位置:首页 > 运维架构

openGL基础知识

2015-10-01 21:35 399 查看
转载自http://tonmly.blog.163.com/blog/static/17471285620116272197507/

你需要明白OpenGL如何绘制并决定我们看到的东西。

相对于OpenGL来说OpenGL ES一个很大的缺点就是除了三角形以外没有别的图元类型。我们没有其它多边形,所以我们想要创建的所有的对象都必须由三角形构成。我引用一个blog的帖子来说明这个问题: IPhone developer ,同时也推荐他的这些文章 OpenGL
ES series.

这里有更多的关于三角形的东西你需要知道。在OpenGL中,有一个概念叫做弯曲(winding),意思是vertices绘制时的顺序。与现实世界中的对象不同,OpenGL中的多边形一般没有两个面。他们只有一个面,一般是正面,一个三角形只有当其正面面对观察者的时候才可以被看到。可以配置OpenGL将一个多边形作为两面的,但是默认情况下三角形只有一个可见的面。知道了那边是多边形的正面以后,OpenGL就可以少做一半的计算量。如果设置两面都可视,则需要多的计算。

虽然有时候一个多边形会独立地显示,但是你或许不是非常需要它的背面显示,经常一个三角形是一个更大的对象的一部分,多边形的一面将在这个物体的内部,所以永远也不会被看到。这个没有被显示的一面被称作背面,OpenGl通过绘制的顺序来确定那个面是正面哪个是背面。顶点按照逆时针绘制的是正面(默认是这样,但是可以被改变)。因为OpenGL能很容易地确定哪些三角形对用户是可视的,它就可以通过使用Backface
Culling来避免为那些不显示在前面的多边形做无用功。



在上面的示意图中,左边青绿色的的三角形是背面,将不会被绘制,因为它相对于观察者来说是顺时针的。而在右边的这个三角形是正面,将会被绘制,因为绘制顶点的顺序相对于观察者来说是逆时针的。

三角形的绘制模式:

GL_TRIANGLES

- 这个参数意味着OpenGL 使用三个顶点来组成图形

所以,在开始的三个顶点,将用顶点1,顶点2,顶点3来组成一个三角形。完成后,在用下一组的三个顶点来组成三角形,直到数组结束。

GL_TRIANGLE_STRIP

- OpenGL 的使用将最开始的两个顶点出发,然后遍历每个顶点,这些顶点将使用前2个顶点一起组成一个三角形。

GL_TRIANGLE_FAN

- 在跳过开始的2个顶点,然后遍历每个顶点,让OpenGL 将这些顶点于它们前一个,以及数组的第一个顶点一起组成一个三角形。

也就是说,同样是0,1,2,3这4个顶点。

在STRIP 状态下是,0,1,2;1,2,3这2个三角形。

在FAN 状态下是,2,1,0;3,2,0这2个三角形。

glLoadIdentity() 只是一个覆盖(重置)函数,它只是基本重置所有的条件(重置所有状态)。

着色

如何通知矩形绘制从一个颜色到下一个?OpenGL 使用了着色。这里有两个着色模型可以在

OpenGL 使用:GL_FLAT&GL_SMOOTH。GL_SMOOTH 是默认的渲染。

做一个总结:GL_SMOOTH 是一个平滑着色,这就意味着当你开始填充一个矩形的时候,O

penGL 将使用在我们squareColours[] 数组里的默认颜色去定义在squareVertices[] 数组里

的每个顶点。使用插值中每个像素的面积之间的点,顺利改变颜色之间的四点。换句话说,

这将是我们出现彩色的矩形。

GL_FLAT 是使用物体的的最后一个顶点的颜色去填充整个图元。形
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: