2014-10-11 74 views

回答

0

首先你不需要用特定的颜色设置帧缓冲区的每个像素。它的表现糟糕而令人讨厌。想想看。你有一个1024×768像素的frameBuffer,这大概786432不同的像素颜色! 做到这一点的最佳方法是创建3个顶点的Tringle,然后为每个顶点赋予一种颜色。 OpenGL将自动生成一个很好的三角形,并且在这三个顶点上指定颜色。

让我们在这里添加一些代码吧?

public void triangleRender() { 
    //add the background buffer color you want 
    gl.glClearColor(1,0,0,1); 
    //clear the buffer 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glLoadIdentity(); 
    gl.glOrthof(0, 320, 0, 480, 1, -1); 

    FloatBuffer vertices; 
    ByteBuffer byteBuffer = ByteBuffer.allocateDirect(3 * 2 * 4); 
    byteBuffer.order(ByteOrder.nativeOrder());    
    vertices = byteBuffer.asFloatBuffer(); 
    vertices.put(new float[] { 0.0f, 0.0f, 1, 0, 0, 1, 
           319.0f, 0.0f, 0, 1, 0, 1, 
           160.0f, 479.0f, 0, 0, 1, 1}); 
    vertices.flip(); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY); 

    vertices.position(0); 
    gl.glVertexPointer(2, GL10.GL_FLOAT, VERTEX_SIZE, vertices); 
    vertices.position(2);    
    gl.glColorPointer(4, GL10.GL_FLOAT, VERTEX_SIZE, vertices); 

    gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3); 
} 

注意,每个能dissable,投影等都是openGL的STATES这意味着每一次的过程中暂停或采空你必须再次打电话给他们。 请记住,这个例子不是性能优化,你现在还不认为。 我建议你仔细研究openGL es状态,了解图形管道。首先去2d(暗示研究投影),然后看看像身份,modelView和viewPort这样的矩阵。

相关问题