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

OpenGL ES 使用顶点索引绘制立方体

2015-08-13 09:59 387 查看
1、新建 MyCubeRenderer.java
/*
* 立方体
*/
public class MyCubeRenderer extends MyAbstractRenderer{

public void onSurfaceCreated(GL10 gl, EGLConfig arg1) {
//设置清屏色(背景)
gl.glClearColor(0, 0, 0, 1);
//启用顶点缓冲区
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
}
protected void drawBefore(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}

protected void draw(GL10 gl) {
float r =0.3f;
//八个顶点的坐标
//以立方体的中心点为(0,0,0) 点
float pos[] ={
-r ,-r ,r ,
r ,-r ,r ,
r , r ,r ,
-r , r ,r ,
-r ,-r ,-r ,
r ,-r ,-r ,
r , r ,-r ,
-r , r ,-r ,
};
//绘制 点得索引
byte index[]={
0,4,7,3,
7,6,2,
6,5,1,
5,4,0,
3,2,1,0
};

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, BufferUtil.arr2ByteBuffer(pos));
//使用索引画图
gl.glDrawElements(GL10.GL_LINE_STRIP, index.length, GL10.GL_UNSIGNED_BYTE, BufferUtil.arr2ByteBuffer(index));
}

}

2、修改 BufferUtil.java 文件

添加方法

public static ByteBuffer arr2ByteBuffer(byte[] arr){
//分配字节缓冲区空间,存放顶点坐标
ByteBuffer ibb=ByteBuffer.allocateDirect(arr.length);
//设置顺序(本地数据)
ibb.order(ByteOrder.nativeOrder());
//放置顶点坐标数组
ibb.put(arr);
//定位指针位置,从该位置开始读取顶点数据
ibb.position(0);
return ibb;
}

3、立方体顶点图



4、运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android OpenGL ES