2011-03-08 3 views
0

저는 OpenGL을 처음 접했습니다. 그리고 그 대부분은 저의 미약 한 뇌에 신비한 채로 남아 있습니다. 나는 NeHe 데모와 레드 북을 공부하고있다. 나는 화면 중앙에 지구를 표시하는 Android 애플리케이션을 작성 중이다. 사용자는 매우 단순한 "Google Earth"처럼 모든 축에 대해 지구를 회전시킬 수 있습니다.OpenGL 모델보기 저장 및 복원

이 코드는 작동합니다 (예 : NeHe 예제를 기반으로합니다). 이제 기능을 추가하고 싶습니다. 사용자는 현재 모델 방향을 저장 한 다음 나중에 동일한 방향으로 되돌릴 수 있어야합니다. 예를 들어 사용자가 지구의 방향을 저장하여 시청자가 고향을 내려다보고 북동쪽이 위로 향하도록 할 수 있습니다.

어떻게하면 OpenGL-ES에서이 작업을 수행 할 수 있습니까? 현재 오리엔테이션을 캡쳐하고 저장하기 위해, 내 코드는 현재의 모델 - 뷰 변환 행렬을 얻을 수 있습니다 - 어떻게하는지 이해할 수 있습니다. 그러나 나중에 저장된 매트릭스를 적용하여 뷰를 복원하는 방법은 무엇입니까?

+1

OpenGL과 어떤 관련이 있는지 잘 모릅니다. 방향 값을 코드에 저장 한 다음 렌더링 할 때 OpenGL에 전달해야합니다. 그렇다면 SharedPreferences에 오리엔테이션 값을 작성하고 다시 활동을 시작할 때 다시로드하지 않는 것이 어떻습니까? – EboMike

답변

0

glGet(Float|Double)v으로 모델보기 행렬을 저장합니다. glLoadMatrix[df]으로로드하십시오.

질문을 다시 읽으면 OpenGL-ES가됩니다. OpenGL-ES를 사용하면 매트릭스 수학 "stuff"를 제공해야하며 작동하지 않습니다. 직접 작업해야합니다. 지금 당장 어떻게하고 있는지 알지 못하면 구체적으로 표현하기가 어렵습니다.

0

나는 실제로 어떤 일이 벌어 지는지에 대한 비 그래픽 모델을 구축하여 glGet*/glRead* (대기 시간, 이식성 등)의 사용을 취소한다고 말하고 싶습니다. 이것은 변형 (회전) 행렬입니다. 그런 다음 각 프레임 push/popMatrixloadMatrix을 사용하여 트랜스 포메이션을 적용합니다. 현재 모델 방향을 저장하는 것은 변환 행렬을 복사하는 것과 동일합니다.이 행렬은 실제로 작은 수의 수레를 복사 한 것입니다.