与glMultMatrixf的翻译,以及何时进行规范化

时间:2012-04-26 16:48:14

标签: android opengl opengl-es-2.0 3d

所以我可以更好地理解事物,我试图摆脱调用gl变换函数(glTranslatef / glRotatef等),而不是创建我自己的矩阵并使用glMultMatrixf()。

我为x / y / z旋转创建的矩阵似乎完美无缺,但我的平移矩阵似乎将我网格的所有顶点折叠成单个轴。

我是否认为通过矩阵是基础:

    { 1.0f,0.0f,0.0f,x
      0.0f,1.0f,0.0f,y,
      0.0f,0.0f,1.0f,z,
      0.0f,0.0f,0.0f,1.0f };

到glMultMatrixf与glTranslatef(x,y,z)相同? (我是专栏。只是为了确保我不是全部倒退我转换了上面的矩阵,它仍然无法工作。似乎把所有东西压平到不同的轴。)

我错过了某个地方的标准化步骤吗?当IS是一个很好的想法来规范你的矩阵。

提前感谢您放弃对我的一些知识!

这些是我的旋转矩阵: x轴

{ 1.0f, 0.0f, 0.0f, 0.0f,
  0.0f, (float) Math.cos(x), (float) -Math.sin(x), 0.0f,
  0.0f, (float) Math.sin(x), (float) Math.cos(x), 0.0f,
  0.0f, 0.0f, 0.0f, 1.0f }; 

YAXIS

{ (float) Math.cos(y),0.0f,(float) Math.sin(y),0.0f,
   0.0f,1.0f,0.0f,0.0f,
  (float) -Math.sin(y),0.0f,(float) Math.cos(y),0.0f,
   0.0f,0.0f,0.0f,1.0f };

Z轴

 { (float) Math.cos(z),(float) -Math.sin(z),0,0,
   (float) Math.sin(z),(float) Math.cos(z),0,0,
   0.0f,0.0f,1.0f,0.0f,
   0.0f,0.0f,0.0f,1.0f };

1 个答案:

答案 0 :(得分:2)

这看起来转向了我。元素顺序应为:

   0   4   8   12
   1   5   9   13
   2   6   10  14
   3   7   11  15

但是你在元素3中有x,它应该是元素12(y和z相同)。

===编辑===

抱歉,刚刚注意到你已经说过你换了它。但是x绝对应该在元素12中,只是为了确认它。我不认为你必须对矩阵做任何额外的事情才能让它发挥作用。