【发布时间】:2013-12-02 08:39:48
【问题描述】:
我正在尝试将一些 OpenGL 代码从 Android 项目移植到 iOS。我之前做过一点 iOS 编程,所以我熟悉 Objective-C 的语法,但我似乎无法弄清楚这些 GLKMatrixStacks 是如何工作的。下面是我尝试移植的一些 Java 代码,其中包含我需要如何使用堆栈的示例。
public void drawLeftHip()
{
float[] temp = new float[16];
System.arraycopy(mModelMatrix, 0, temp, 0, mModelMatrix.length);
stack.push(temp);
//Global transformations here
Matrix.translateM(mModelMatrix, 0, -1.0f, -.75f, 0.0f);
Matrix.rotateM(mModelMatrix, 0, lThighAngle, 1.0f, 0.0f, 0.0f);
//draw children
drawLeftThigh();
//left hip
Matrix.scaleM(mModelMatrix, 0, .25f, .25f, .25f);
drawPackedTriangleBuffer(mSphereData, mSphereVertexCount, mModelMatrix, mColorBlack); //draw the triangle with the given model matrix
mModelMatrix = stack.pop();
}
我基本上是复制 mModelMatrix(一个 4x4 矩阵)并将其压入堆栈,进行全局转换,绘制子项,进行局部转换,最后弹出堆栈。
我已经尝试将 NSMutableArray 用于堆栈,但我不能使用它,因为我需要使用不是 if 类型 (id) 的 GLKMatrix4。
【问题讨论】:
标签: objective-c opengl-es stack glkit