我想绘制多个立方体在等角摄像机角度。这是绘制一个的代码。 (iOS上带有GLKit的OpenGL ES 2.0)。OpenGL绘制多个等角立方体
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进行控制,对吧? (“查看”部分)。
好 - 我很高兴你明白了。你不需要重新计算像这样的每个立方体的相机矩阵。如果您在外面计算相机矩阵,那么只需对每个立方体执行'cameraMatrix * objTranslate'。 :) – jhabbott 2013-04-12 09:31:43