OpenGL ES 绘制颜色立方体

1、新建 MyColorCubeRenderer.java

/*
 * 颜色立方体
 */
public class MyColorCubeRenderer extends MyAbstractRenderer {

    public void onSurfaceCreated(GL10 gl, EGLConfig arg1) {
        //设置清屏色(背景)
        gl.glClearColor(0, 0, 0, 1);
        //启用顶点缓冲区
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        // 颜色缓冲区
        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
        
        //启用深度测试 
        gl.glEnable(GL10.GL_DEPTH_TEST);
        //启用表面剔除 //剔除 :如果看不见 就告诉openGL 不用绘制 (提高性能)
        gl.glEnable(GL10.GL_CULL_FACE);
        //openGL默认 逆时针为正面
        gl.glFrontFace(GL10.GL_CCW);//逆时针  为正面
    }
    protected void drawBefore(GL10 gl) {
        //清除颜色缓冲区 |深度缓冲区
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_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[]={
                7,4,3,3,4,0,
                3,0,2,2,0,1,
                2,1,6,6,1,5,
                7,6,5,5,4,7,
                6,7,3,6,3,2,
                1,0,4,1,4,5,
        };
        //颜色
        float []colors={
            0f ,1f ,1f ,1f,    
            0f ,1f ,0f ,1f,    
            1f ,1f ,1f ,1f,    
            1f ,1f ,0f ,1f,    
            0f ,0f ,1f ,1f,    
            0f ,0f ,0f ,1f,    
            1f ,0f ,1f ,1f,    
            1f ,0f ,0f ,1f,    
        };
        gl.glCullFace(GL10.GL_BACK);
        gl.glColorPointer(4, GL10.GL_FLOAT, 0, BufferUtil.arr2ByteBuffer(colors));
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, BufferUtil.arr2ByteBuffer(pos));
        //使用索引画图
        gl.glDrawElements(GL10.GL_TRIANGLES, index.length, GL10.GL_UNSIGNED_BYTE, BufferUtil.arr2ByteBuffer(index));
    }
}


2、立方体顶点图

3、运行效果

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值