我正在尝试以等距相机角度绘制多个立方体。这是绘制一个的代码。(iOS 上带有 GLKit 的 OpenGL ES 2.0)。
float startZ = -4.0f;
// position
GLKMatrix4 modelViewMatrix = GLKMatrix4Identity;
modelViewMatrix = GLKMatrix4Translate(modelViewMatrix, location.x, location.y, location.z + startZ);
// isometric camera angle
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, GLKMathDegreesToRadians(45), 1.0, 0, 0);
modelViewMatrix = GLKMatrix4Rotate(modelViewMatrix, GLKMathDegreesToRadians(45), 0.0, 1.0, 0);
self.effect.transform.modelviewMatrix = modelViewMatrix;
[self.effect prepareToDraw];
glDrawArrays(GL_TRIANGLES, 0, 36);
问题是它先平移,然后旋转,这意味着有多个盒子时,它们不会对齐(它们看起来像一串菱形。每个都在适当的位置并旋转,因此角重叠)。
我试过切换顺序,所以旋转在翻译之前,但它们根本没有出现。我的顶点数组绑定到以原点为中心的单位立方体。
我真的不明白如何控制相机与物体分开。我在没有得到它的情况下使用了投影矩阵一段时间。据我了解,相机应该是用modelViewMatrix控制的,对吧?(“视图”部分)。