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

OpenGL ES 2.0 - 绘制方式

2017-01-09 14:25 453 查看

绘制方式

各种绘制方式

GL_POINTS



GL_LNES



GL_LINE_STRIP



GL_LINE_LOOP



GL_TRIANGLES



GL_TRIANGLE_STRIP



GL_TRIANGLE_FAN



GL_TRIANGLES_STRIP 三角形条带模式

一般情况下绘制物体需要的顶点数量比直接的三角形方式(GL_TRIANGLES)少.

GL_TRIANGLES_STRIP 妙用之绘制非连续三角形构成的物体

如下图,只要将上一批三角形的最后一个顶点和下一批三角形的第一个顶点重复一次即可.



顶点法与索引法

glDrawArrays
方法进行物体的绘制,按照传入渲染管线顶点本身的顺序及选用的绘制方式将

顶点组织成图元进行绘制的,也称之为顶点法.

顶点法弊端

有些情况下不得不在顶点序列中出现很多重复的顶点,若希望减少重复顶点占用的空间,可考虑

采用
glDrawElements
方法来进行物体的绘制.

glDrawElements方法

此方法绘制时,不但要将顶点序列传入渲染管线,还需要将索引序列传入管线.

绘制时管线根据索引值序列中的索引一一从顶点序列中去取出对应的顶点,再根据当前选用的绘制

方式组织成图元进行绘制.

重要代码

GLES20.glDrawElements(//用索引法绘制图形
GLES20.GL_TRIANGLE_FAN,//绘制方式
iCount,//索引数目
GLES20.GL_UNSIGNED_BYTE,
mIndexBuffer//索引数据缓冲,ByteBuffer类型
);


设置合理的视角

在OpenGL ES的虚拟世界中,摄像机也有视角大小,如下图



OpenGL ES 虚拟世界摄像机的左右视角大小主要是由left,right,及near值决定的

上下视角由top,bottom,及near值决定的.

计算视角

水平方向视角

a=2arctg(leftnear)

垂直方向视角

a=2arctg(topnear)

卷绕和背面剪裁

背面剪裁

指渲染管线在对构成立体物体的三角形图元进行绘制时,仅当摄像机观察点位于三角形正面的情况下才

绘制三角形.打开背面剪裁,在大部分情况下可以提高渲染效率,去除大量不必要的渲染工作.

卷绕

了解背面剪裁后,很重要的一点就是确定摄像机位于一个面的正面还是反面.在默认的情况下,OpenGL ES

中规定当摄像机观察一个三角形面时,若三角形中3个顶点的卷绕顺序是逆时针则摄像机观察其正面,反之

摄像机观察其反面.



重要代码

GLES20.glEnable(GLES20.GL_CULL_FACE);//打开背面剪裁
GLES20.glDisable(GLES20.GL_CULL_FACE);//关闭背面剪裁
GLES20.glFrontFace(GLES20.GL_CCW);//设置逆时针卷绕为正面,默认设置如此,所以一般不需要明确设置
GLES20.glFrontFace(GLES20.GL_CW);//设置顺时针卷染为正面.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opengl es