2013-01-19 3 views
1

내가 중첩 된 통화의 종류를 사용하고 기존의 OpenGL ES 1. 사용하여 안드로이드 프로젝트를 : 그것은 에뮬레이터에서 내 휴대 전화에서 잘 작동중첩 glPushMatrix이 작동하지 않습니다 (스택 크기 1?)

... 
gl.glPushMatrix(); 
... 
gl.glPushMatrix(); 
... 
gl.glPopMatrix(); 
... 
gl.glPopMatrix(); 
... 

하지만 내 탭과 내 동생의 탭 (개체의 위치가 잘못되었습니다)에서 작동하지 않습니다. 내 테스트에 따르면 중첩 된 glPushMatrix는 스택 크기가 1 인 경우처럼 지원되지 않으므로 첫 번째 POP는 이전 PUSH 상태가 아니라 PUSH 상태로 돌아갑니다. 중첩 된 호출을 사용하지 않고 해결 방법을 시도했지만 제대로 작동하지만 이러한 솔루션은 다음 작업을 복잡하게 만듭니다. 그게 알려진 것입니까? 일부 장치의 스택 크기가 1입니까? 적어도 32 이상이어야한다고 생각했습니다. 어떻게 든 감지 및/또는 구성 가능합니까? 매트릭스를 어떻게 든 배열이나 다른 구조에 내 스택을 만들어 수동으로로드 할 수 있습니까? 감사.

답변

2

다음을 사용하여 스택의 깊이를 읽을 수 있습니다

glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &result); 

그것은 참으로해야 당신이 실제로 GL_MODELVIEW 매트릭스 스택을 사용하는 가정거야 적어도 32

, 당신은 아니에요 실수로 모든 변환을 GL_PROJECTION 또는 다른 것으로 푸시합니다.

이 기능이 사용되지 않으므로 매트릭스를 직접 계산해야하지만 이상적입니다.

+0

아, 답변 해 주셔서 감사합니다. 정말 미안 해요, 내 실수 였어, GL_PROJECTION 및 glOrthof 사용하고 ... GL_MODELVIEW 전환 한 지금 잘 작동하고 있습니다. 고맙습니다. 오랜 세월 동안 "클래식"OpenGL에서 작업하고 있었고 거의 모든 것을 잊어 버린 것처럼 보입니다. – Martin

+0

그리고 더 이상 사용되지 않는 기능에 대해 알고 있습니다. 아마이 프로젝트 나 다음 프로젝트를 위해 곧 ES 2.0으로 전환하려고 시도 할 것입니다. – Martin