http://www.cnblogs.com/shengdoushi/archive/2011/01/13/1934181.html#viewSource
http://www.douban.com/note/74862515/
http://blog.csdn.net/hecker385/article/details/6678621
创建一个OpenGLRenderer 实现 GLSurfaceView.Renderer接口:
GLSurfaceView 的渲染模式有两种,一种是连续不断的更新屏幕,另一种为on-demand ,setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY),只有在调用requestRender() 在更新屏幕。 缺省为RENDERMODE_CONTINUOUSLY 持续刷新屏幕。
通常一个纹理映射的步骤是:
其实最重要的是3步
1.定义点的3维坐标, 下面4个向量就定义了3维空间里的4个点,就是一个平面
-1.0f, -1.0f, 1.0f, //v0
1.0f, -1.0f, 1.0f, //v1
-1.0f, 1.0f, 1.0f, //v2
1.0f, 1.0f, 1.0f, //v3
2.定义贴图材质和坐标的映射, 就是图的4个角怎么对到上面的平面上,就是怎么贴
0.0f, 0.0f, //图的左下对应 v0点, 这里的只是表示4个角,不代表图的长度
0.0f, 1.0f, // 图的右下对应 v1
1.0f, 0.0f,
1.0f, 1.0f,
3上面已经把一个图和3维中的一个面做好了映射,下面就是画了。
opengl es里面贴图时只支持三角形的画法, 所以你要定义怎么画三角形的索引,就是上面的1里面的点画的顺序的数组
0,1,3, //画v0, v1, v3表示的三角形
0,3,2
最后画的代码:
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); //绑定已经加载的材质
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); //设置3维点
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); //设置材质2维到3维的映射
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_BYTE, indexBuffer);//根据3里面的索引来画贴好图的三角形