在LuaGL或OpenGL中旋转3d世界

时间:2014-09-26 07:57:36

标签: opengl lua

我只是想知道如何在LuaGL或OpenGL中旋转3d世界。我遇到的问题是,当我旋转时,在我的程序中靠近墙壁的某个时刻,我最终会在墙上或在我建造的房间外面。不确定为什么会这样,而且更难,因为我看到的很多编程代码都是面向C或C ++的。我已经检查过NEHE,它已经是C或C ++导向,而不是Lua导向。

1 个答案:

答案 0 :(得分:0)

问题是你正在旋转关于它们的世界空间坐标的所有内容,为了解决这个问题,你需要使你的对象的原点等于你想要旋转的点,然后旋转然后将其转换到它应该是。

因此,例如,如果您只想旋转世界,则需要确保您绘制的每个对象的世界矩阵等于单位矩阵。

在图形中,我们遵循scaleMatrix * rotationMatrix * translationMatrix的原则。

以下是对象的绘制方法的示例。

你应该考虑使用glm来处理你的矩阵,但我发现它可以更好地工作。

glPushMatrix();
glLoadIdentity();
glScale();
glRotate();
glTranslate();
glPopMatrix)();