我想知道在 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) 渲染每个模型
对我来说似乎很奇怪: 为了定位模型而转换模型的矩阵是否合适?
我应该将模型 ID 与旋转、缩放和平移因子一起存储在某个文件中吗?