OpenGL ES 学习
1.http://www.jayway.com/2009/12/04/opengl-es-tutorial-for-android-part-ii-building-a-polygon/
2.http://blog.csdn.net/mapdigit/article/details/7526556
3.http://blog.csdn.net/lixiang0522/article/details/7989107
打开顶点开关和关闭顶点开关的方法如下:
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY)
...
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
在打开顶点开关后,将顶点坐标传给OpenGL 管道的方法为:glVertexPointer:
public void glVertexPointer(int size,int type,int stride,Buffer pointer)
- size: 每个顶点坐标维数,可以为2,3,4。
- type: 顶点的数据类型,可以为GL_BYTE, GL_SHORT, GL_FIXED,或 GL_FLOAT,缺省为浮点类型GL_FLOAT。
- stride: 每个相邻顶点之间在数组中的间隔(字节数),缺省为0,表示顶点存储之间无间隔。
- pointer: 存储顶点的数组。
下面代码设置逆时针方法为面的“前面”:
gl.glFrontFace(GL10.GL_CCW);
打开 忽略设置:
gl.glEnable(GL10.GL_CULL_FACE);
明确指明“忽略“哪个面的代码如下:
gl.glCullFace(GL10.GL_BACK);
GLSurfaceView 的渲染模式有两种,一种是连续不断的更新屏幕,另一种为on-demand ,只有在调用requestRender() 在更新屏幕。 缺省为RENDERMODE_CONTINUOUSLY 持续刷新屏幕。
OpenGL ES提供了两类方法来绘制一个空间几何图形:
- public abstract void glDrawArrays(int mode, int first, int count) 使用VetexBuffer 来绘制,顶点的顺序由vertexBuffer中的顺序指定。
- public abstract void glDrawElements(int mode, int count, int type, Buffer indices) ,可以重新定义顶点的顺序,顶点的顺序由indices Buffer 指定。
使用3D建模,而有OpenGL ES库来完成从3D模型到二维屏幕上的显示。
这个过程可以分成三个部分:
- 坐标变换,坐标变换通过使用变换矩阵来描述,因此学习3D绘图需要了解一些空间几何,矩阵运算的知识。三维坐标通常使用齐次坐标来定义。变换矩阵操作可以分为视角(Viewing),模型(Modeling)和投影(Projection)操作,这些操作可以有选择,平移,缩放,正侧投影,透视投影等。
- 由于最终的3D模型需要在一个矩形窗口中显示,因此在这个窗口之外的部分需要裁剪掉以提高绘图效率,对应3D图形,裁剪是将处在剪切面之外的部分扔掉。
- 在最终绘制到显示器(2D屏幕),需要建立起变换后的坐标和屏幕像素之间的对应关系,这通常称为“视窗”坐标变换(Viewport) transformation.

浙公网安备 33010602011771号