2014-10-11 3 views

답변

0

우선 프레임 버퍼의 각 픽셀을 특정 색상으로 설정하지 않아도됩니다. 성능이 좋지 않고 불쾌합니다. 그것에 대해 생각 해봐. 당신은 약 786432 다른 픽셀 색상 thats 1024 x 768 픽셀의 frameBuffer가 !!!! 이 작업을 수행하는 가장 좋은 방법은 3 개의 꼭지점이있는 삼각형을 만든 다음 각 꼭지점에 색상을 지정하는 것입니다. OpenGL은 자동으로 3 개의 정점에 지정한 색상으로 멋진 삼각형을 생성합니다.

여기에 몇 가지 코드를 추가하겠습니다. 각 막아 버릴 수 있다는

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); 
} 

주, 프로젝션 등 때마다이 프로세스가 일시 정지하거나 다시 전화를해야 들렸다 것을 의미하는 OpenGL을 STATES 있습니다. 이 예제는 현재 성능상으로 최적화되지 않았지만 지금은 이해할 수없는 점을 명심하십시오. OpenGL ES 상태를주의 깊게 연구하고 그래픽 파이프 라인에 대해 배울 것을 제안합니다. 처음에는 2 차원으로 가십시오 (othrographic 투영에 대한 힌트 연구). identity, modelView 및 viewPort와 같은 행렬을 살펴보십시오.