0

나는 다음과 같은 장면을 가지고 있습니다 :OpenGL ES의 카메라

원점을 중심으로하고 사각형을 둘러싸는 3D 상자입니다. 우리는 그것을 4면 모두에서 거리가있는 건물로 생각할 수 있습니다. 투영 뷰 모델 행렬을 가져오고 싶습니다. 카메라 설정을 기반으로 투영 및 뷰 행렬을 준비했지만 모델 행렬에 대해서는 잘 모릅니다. 장면의 모든 오브젝트는 장면마다 다른 모델 행렬 또는 하나의 모델 행렬을 갖게됩니까?

큐브와 직사각형의 모델 행렬은 어떻게됩니까?

건물의 모든 네면의 거리에서 카메라를 이동하고 싶습니다.

답변

0

어느 쪽이든 가능하지만 각 건물 (큐브)마다 별도의 모델 행렬을 사용하는 것이 좋습니다.이 행렬은 아마도 번역으로 구성되어있을 수 있습니다. 각각은 원산지와 다른 번역을 갖습니다. 그런 다음 glDrawArrays()로 각 모델을 그리기 전에 이러한 모델 행렬을 차례로 정점 셰이더에 전달합니다. 카메라 위치는 Vertex 쉐이더로 전달되는 뷰 프로젝션 매트릭스로 이동해야하지만 카메라가 실제로 움직일 때만 업데이트됩니다. 그런 다음 Vertex 쉐이더는 모델 및 뷰 프로젝션 매트릭스를 함께 곱해야합니다. 이것은 쉐이더에 있어야합니다.

+0

번역본은 상자의 중심과 원점의 직사각형이 어디입니까? – Hellboy

+0

예, 정확하게. 이렇게하면 모든 모형 행렬에 단일 축척 또는 회전 행렬을 곱하거나 두 가지 모두를 곱하여 전체 장면을 쉽게 축척하거나 회전 할 수 있습니다. – ClayMontgomery

+0

그래서 나는 이렇게 할 것입니다. PVRTMat4 ViewMatrix = PVRTMat4 :: LookAtRH (vFrom, vTo, vUp); PVRTMat4 ProjectionMatrix = PVRTMat4 :: PerspectiveFovRH (DEG2RAD (fFOV), AspectRatio, CameraNear, CameraFar, PVRTMat4 :: OGL, rotate); (i = 0; i Hellboy