openGL基础知识

转载自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 来避免为那些不显示在前面的多边形做无用功。

OpenGL - tonmyWu - tonmyWu
 

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


三角形的绘制模式:

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 是使用物体的的最后一个顶点的颜色去填充整个图元。形

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值