我正在尝试在 iPhone 上更新我对 OpenGL ES 1.1 到 2.0 的(少量)知识。iPhone 的默认 OpenGL ES 应用程序模板会绘制一个正方形,并使其上下平移并正常工作。他们的实现对着色器本身的 Y 值变化进行了数学运算,这几乎没有用。因此,我将顶点着色器更改为:
uniform mat4 mvpMatrix;
attribute vec4 position;
attribute vec4 color;
varying vec4 colorVarying;
void main()
{
gl_Position = position * mvpMatrix;
colorVarying = color;
}
这似乎是正确和普遍的(从我的研究中看到)。显然,我对代码进行了必要的更改,例如绑定制服,并且为了帮助进行数学计算,我获得了 esUtil.h 代码的源代码。在绘图方法上,我的代码如下所示:
transY += 0.075f;
ESMatrix mvp, model, view;
esMatrixLoadIdentity(&view);
esPerspective(&view, 60.0, 320.0/480.0, 1.0, -1.0);
esMatrixLoadIdentity(&model);
esTranslate(&model, sinf(transY), 0.0f, 0.0f);
esMatrixLoadIdentity(&mvp);
esMatrixMultiply(&mvp, &model, &view);
glUniformMatrix4fv(uniforms[UNIFORM_MVPMATRIX], 1, GL_FALSE, (GLfloat *)&mvp);
这应该可行,但不幸的是,我得到的与简单的翻译完全不同。
我已经重新启动模板几次,但我无法弄清楚我在这里做错了什么......旋转似乎按预期工作,我相信......
任何帮助,将不胜感激。