2012-12-19 4 views
1

가로 모드로만 실행되는 앱을 만들고 있습니다. 아직 질감에 대해 걱정할 것은 없지만 텍스쳐 쿼드를 사용하여 배경을 만들려고합니다. 나는 GL_DEPTH_TEST가 비활성화 된 상태에서 drawOverlay (GL10 gl)의 화면을 채우는 쿼드를 그리려고했지만 쿼드가 화면을 완전히 채우지 않을 때마다 아래쪽과 위쪽의 glClearColor 막대를 볼 수 있습니다. 화면.Android OpenGL ES 1 : 쿼드로 디스플레이 채우기

다른 모든 개체에 사용했던 modelview 행렬을 사용하여 그릴 수 없습니다. gluOrtho2D 및 glOrthof를 사용하여 그려 보았지만 그 중 어느 것도 작동하지 않았습니다. 근사 및 원거리 클리핑면이 직각 도형을 사용하는 방식을 실제로 이해하지 못합니다. glOrtho2D 또는 glOrthof를 사용하여 그릴 때마다 쿼드는 전혀 그려지지 않았습니다 (나머지 장면은 여전히 ​​렌더링되었지만). 여기

public void onDrawFrame(GL10 gl) { 
    drawOverlay(gl); 
    gl.glLoadIdentity 
    //... 
} 

방법 "배경"입니다 : 그려지는 아무것도 전에 - 여기

private void drawOverlay(GL10 gl) { 
    gl.glDisable(GL10.GL_DEPTH_TEST); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glPushMatrix(); 
    gl.glLoadIdentity(); 
    GLU.gluOrtho2D(gl, 0f, 1f, 1f, 0f); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    background.draw(gl, 1.0f, 1.0f, 1.0f, 1.0f); 
    gl.glEnable(GL10.GL_DEPTH_TEST); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glPopMatrix(); 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
} 

내가 onDrawFrame의 시작 부분에서 해당 함수를 호출 직교 행렬을 사용하여 도면에서 내 시도 만들어 짐 :

background = new ShapePostcard(1f, 1f); 

나는 꽤 확신 할 수 없다. 일반 modelview 매트릭스를 사용하여 화면을 덮을 쿼드이지만 기본적으로 깊이 테스트를 사용하지 않는 모든 기능을 사용하기 전에 onDrawFrame에서 "배경"을 그리는 것뿐이었습니다.

지원해 주셔서 감사합니다.

답변

0

화면을 채우는 쿼드를 그리는 가장 쉬운 방법은 투영법과 모델을 모두 단위 행렬로 설정 한 다음 좌표가 [-1, -1]에서 [1,1] 인 메쉬를 그립니다. 국경을 보았을 때 그걸 그린거야? 내 말은,

(x, y, widht, height) = (-1,-1, 2, 2)