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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值