2010-07-11 10 views
1

나는 android 2.2에서 opengl es 2.0을 사용하고 있습니다. 내 문제는 여기 캔버스, 또는 전체 화면 안드로이드 뷰를 만드는, 내가 이미 알아 냈어되지 않습니다.안드로이드에서 전체 화면을 그리는 방법?

예를 들어, 2D 게임의 텍스처링 표면으로 사용하기 위해 GL_QUAD 또는 2 개의 GL_TRIANGLES 좌표를 전체 화면을 완벽하게 커버하는 좌표를 설정하는 방법이 궁금합니다.

I 현재 gluPerspective가 설정 가지고 onSurfaceChanged 내부

float ratio = (float) width/height; 
GLU.gluPerspective(gl, 45.0f, ratio, 1.0f, 100.0f); 

때문에 폭과 높이 변수는 각각 화면의 폭과 높이이다. 표시된 사각형이 화면에 비례하지 않습니다 그러나

public static final float screenVerts[] = { 
    -1f, -1f, 
    1f, -1f, 
    1f, 1f, 
    -1f, 1f 
}; 

, 그것은 단순히 좌표가 분명히 OpenGL은 자신의 상대 인 상태, 사각형으로 표시되는 : 다음

I는 쿼드의 좌표가 화면의 높이/너비가 아닌 지오메트리입니다.

어떻게 screenVerts 변수 (그리는 rect의 2D 점)를 화면 자체에 상대적으로 만드나요? 나는. 1.0f는 쿼드에있는 점 중 하나의 Y 좌표에서 화면 높이의 100 %입니다.

그리고 저는이 말을 잘하지 못해 사과드립니다. 다시 설명해야 할 필요는 없습니다.

답변

2

대신 프로젝션 매트릭스를 gluOrtho2D으로 설정해야합니다. 또 다른 것은 OpenGL ES에 GL_QUAD가 없다는 것입니다. 두 개의 삼각형을 사용해야합니다. 마지막으로 축 정렬 텍스처를 그리려면 장치가 OES_draw_texture (Android 기기에서 널리 지원됨)을 지원하는 경우 glDrawTexiOES을 사용하면 더 빠르고 쉽습니다.

+0

아, 감사합니다. OpenGL은 삼각형, 삼각형 삼각형 및 삼각형 삼각형 만 지원한다는 것을 알고 있습니다. 원하는 최종 제품이 직사각형이라는 혼란을 피하려고했습니다. 도움이되어 주셔서 감사합니다. 사람들이 익숙했던 것처럼 문서를 작성하지 않은 것처럼 보입니다. xD –

관련 문제