Android에서 OpenGL 2.0을 배우려고 노력 중이므로 iOS에서 OpenGL 1을 사용하여 게임을 즐겼으며 정말 즐겁습니다.Android : OpenGL 2.0 1 인칭 카메라
내 간단한 질문 카메라 및 이동할 수있는 3D 환경 (첫 사람)
을 만들기에 관한 나는 카메라를 제어 할 수
Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
를 사용해야하고 난에 어딘지 세계 (onDrawFrame에 업데이트) 또는 onSurfaceCreated (한 번)에 그 설정 나는 내 주위 세계를 회전하고 느낌있는 대신
Matrix.setIdentityM(mViewMatrix, 0);
Matrix.translateM(mViewMatrix, 0, mMoveY, 0.0f, mMoveX);
Matrix.rotateM(mViewMatrix, 0, mDeltaY, 1.0f, 0.0f, 0.0f);
Matrix.rotateM(mViewMatrix, 0, mDeltaX, 0.0f, 1.0f, 0.0f);
를 사용하여.
난 당신이 같은 결과를 얻을 수 있기 때문에 GLLookAt
분명히 정확한 결과를 산출하는 것을 사용하십시오. 'setLookAt'는 변환과 회전보다 더 높은 추상화이기 때문에 둘 다 사용할 수 있습니다. –
당신과 당신의 사용 사례에 가장 적합한 것을 사용하십시오. OpenGL에서 당신이하는 일은 당신 주위의 세계를 회전시키는 것입니다. 실제 카메라는 없습니다 (어쨌든 쉐이더에서 변형을 완전히 제어 할 수있는 ES 2에서는 더욱 그렇습니다). 결국'setLookAt'는 * "world"*의 회전과 변환을 계산하는 것보다 많은 것을하지는 않습니다. 같은 방식으로'translate'와'rotate' 호출의 무리처럼, 더 좋은 것입니다. 높은 수준의) 인터페이스를 제공합니다. 이미'mMove'와'mDelta' 값을 가지고 있다면, 두번째 방법이 더 쉬워 질 것입니다. –
내게 설명해 주실 수 있습니다. lookAt는 여러 통화를 호출하고 메서드 호출을 호출하는 것과 동일합니까? translate 부분은 실제로 그다지 많은 작업이 아니지만 rotate는 sin/cos 연산을 수행하여 회전 행렬을 만든 다음 2 행렬을 곱해야합니다. 반면 LookAt는 3 개의 기본 벡터와 번역을 매트릭스에 직접 삽입합니다.기본 벡터 : X 축 교차 (앞으로, 위로), Y 축 위로, Z 축 앞으로 = 룩어. 각각은 각각 열로 표시됩니다. 결과가 같으면 동의하지만 가장 적합한 것을 사용하십시오. –