我不确定我是否误解了事情,或者我只是累了。 考虑下面的两行代码。
GLKMatrix4 projection = GLKMatrix4Translate(_perspective, 0, 0, -5);
GLKMatrix4 projection = GLKMatrix4Multiply(_perspective, GLKMatrix4MakeTranslation(0, 0, -5));
我希望它们是等价的。但他们不是。 GLKMatrix4Translate的来源是:
static __inline__ GLKMatrix4 GLKMatrix4Translate(GLKMatrix4 matrix, float tx, float ty, float tz)
{
GLKMatrix4 m = { matrix.m[0], matrix.m[1], matrix.m[2], matrix.m[3],
matrix.m[4], matrix.m[5], matrix.m[6], matrix.m[7],
matrix.m[8], matrix.m[9], matrix.m[10], matrix.m[11],
matrix.m[0] * tx + matrix.m[4] * ty + matrix.m[8] * tz + matrix.m[12],
matrix.m[1] * tx + matrix.m[5] * ty + matrix.m[9] * tz + matrix.m[13],
matrix.m[2] * tx + matrix.m[6] * ty + matrix.m[10] * tz + matrix.m[14],
matrix.m[15] };
return m;
}
但是我预计最后一行是:
matrix.m[3] * tx + matrix.m[7] * ty + matrix.m[11] * tz + m[15];
我是纠正还是在迷雾中?
答案 0 :(得分:0)
我认为你是对的,翻译中必定存在错误。我使用MakeTranslation + Multiply而不是Translate函数,因为m [15]始终保持不变。