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、运行效果