OpenGL,模型矩阵为无旋转/平移/缩放

时间:2013-09-09 10:31:25

标签: opengl matrix transform

我正在玩opnegl(旧的,抱歉现代的opengl家伙),我正在尝试理解矩阵并用glRotatef替换glTranslatefglLoadMatrixf

我不明白如何设置一个没有旋转,没有平移,没有缩放的矩阵。我以为我可以使用单位矩阵,但它不起作用。

我希望有一个矩阵,写作:

glPushMatrix();
{
    drawMyCube();
}
glPopMatrix();

相当于写作:

glPushMatrix();
{
    glLoadMatrixf( myCubeTransform.getTranspose() );
    drawMyCube();
}
glPopMatrix();

如果我有类似的话:

/* 1: */ // glLoadMatrixf( myCubeTransform.getTranspose() );
/* 2: */ // glLoadIdentity();

首先我想使用myCubeTranform Matrix4类(我使用的是行主要的矩阵类,所以我必须使用getTranspose()来匹配opengl列主要顺序)但它不起作用,所以我使用glLoadIdentity确保不会弄乱我的Matrix4类(矩阵代码中的一些错误?)和..它也不起作用。

所以我的问题是:如何设置一个没有平移,没有旋转,没有缩放的变换矩阵?

“不起作用”我的意思是我的立方体不在原点(我希望它在哪里)。实际上,我根本没有看到它(问题是它是在视锥体之外画出来的吗?)

1 个答案:

答案 0 :(得分:0)

glLoadMatrix 将取代矩阵堆栈顶部的内容。这意味着,它将使您的视图设置无效,您之前可能已经做过。您必须做出选择:既要自己实现视图部分,也要在模型转换上预先加倍。或者(出于学习目的)使用 glMultMatrix 而不是现在 glLoadMatrix 的位置。