所以快速浏览照片:
这是正常的:
这是在X轴或Y轴上旋转180度之后:
我不知道为什么会发生这种情况。我使用OpenTK渲染一个简单的Bullet物理场景。代码是直截了当的,几乎看起来矩阵的处理方式有问题。它是直接的渲染代码:
GL.PushMatrix();
GL.MultMatrix(Body.MotionState.WorldTransform.ToArray());
GL.Scale(HalfX * 2, HalfY * 2, HalfZ * 2);
GL.Color4(Color4.Blue);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 0, 10);
GL.End();
GL.Color4(Color4.Yellow);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 10, 0);
GL.End();
GL.Color4(Color4.Green);
GL.Begin(PrimitiveType.Lines);
GL.Vertex3(0, 0, 0);
GL.Vertex3(10, 0, 0);
GL.End();
if (Body.ActivationState == ActivationState.ActiveTag)
{
GL.Color4(Color4.Blue);
}
else if (Mass == 0)
{
GL.Color4(Color4.Red);
}
else
{
GL.Color4(Color4.Green);
}
model.Draw();
GL.PopMatrix();
我已经尝试将其分解为它的组件:平移矢量很好,缩放很好,在Z轴上旋转看起来很好......当你添加旋转时它就是它开始飞行的X或Y轴。我有控制台输出:两个图像中Z轴上的框正好是6.9999。
我哪里错了?我错过了什么?我该如何解决这个问题?!
答案 0 :(得分:1)
好的...... PushAttrib(AttribMask.AllAttribBits); PushMatrix();
在我的/ TEXTFONT LOADING CODE /修复它。不知何故,在代码中设置一些奇怪的属性,加载字体以便以后渲染GL.Rotate旋转(0,0,1)而不是(0,0,0)... OpenGL肯定是气质......
所以这里的教训是...... 从不假设在处理OpenGL时,无关的代码是真正无关的。