0

У меня есть сцена следующим образом:Камера в OpenGL ES

3D-коробка с основанием, расположенным по центру и четырьмя прямоугольниками, окружающими базу. Мы можем думать, что это здание с улицами на всех его четырех сторонах. Я хочу получить матрицу проекционных представлений. Я подготовил матрицы проекции и просмотра на основе настроек камеры, но не уверен в матрицах моделей. Будет ли каждый объект в сцене иметь другую матрицу модели или только одну модельную матрицу для сцены в целом?

Какова будет матрица модели для куба и прямоугольников?

Я хочу переместить камеру по улицам на всех четырех сторонах здания.

ответ

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, вращение); для (i = 0; i Hellboy