2014-10-11 61 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這樣的矩陣。

相關問題