【发布时间】:2013-04-12 14:23:08
【问题描述】:
我正在尝试以等距相机角度绘制多个立方体。这是绘制一个的代码。 (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控制的,对吧? (“视图”部分)。
【问题讨论】:
标签: ios objective-c opengl-es opengl-es-2.0 glkit