OpenGL ES 绘制颜色立方体

来源:互联网 发布:淘宝司法拍卖房产技巧 编辑:程序博客网 时间:2024/04/30 00:19

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 0