Мне интересно, как лучше всего сохранить положение объектов в 3D-сцене.В моем случае сцены на самом деле являются уровнями игры.
Каждая сцена имеет:
- Это собственная матрица проекции.
- Список моделей для визуализации
Каждая модель имеет:
- Список вершин
- GLSL-программа для визуализации самой себя
- Текстура
- Матрица "модель"
Я использую GLES 2. Таким образом, нет glPushMatrix, glPopMatrix, glTranslate и т. Д. Они недоступны.Вместо этого у меня есть свои собственные функции, которые работают с моими собственными объектами Matrix.
1) Настройте матрицу проекции (используя ортогональную матрицу)
_math_matrix_ortho(&this->ProjectionMatrix, 0.0, 1.0, 0.0, (float)height / (float)width, -1.0f, 1.0f);
2) Загрузите каждую модель
3) Масштабируйте каждую модель, чтобы сделать их правильной стороной пропорционально друг другу.Функция масштабирования регулирует матрицу модели.
model->modelMatrix.Scale(0.25, 0.25, 0.25);
4) Переместить каждую модель на место
model->modelMatrix.Translate(2.0, 0.0, 0.0);
7) Сделать каждую модель
Что мне кажется странным сразу: Это уместнопереводить матрицу модели для позиционирования моделей?
Должен ли я хранить идентификатор модели вместе с коэффициентами поворота, масштабирования и перевода в файле где-нибудь?