0

我正在玩 opnegl (旧的,对不起现代的 opengl 家伙),我正在尝试理解矩阵glRotatefglTranslatefglLoadMatrixf.

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

我想要一个这样的矩阵:

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

相当于写:

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

如果我有类似的东西:

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

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

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

“不起作用”是指我的立方体不在原点(我希望它在哪里)。实际上,我根本看不到它(可能是在视锥体之外绘制的?)

4

1 回答 1

0

glLoadMatrix将替换矩阵堆栈顶部的内容。这意味着,它将消除您以前可能做过的视图设置。您必须做出选择:要么自己实现视图部分,要么在模型转换上预乘它。或者(出于学习目的)使用glMultMatrix而不是您现在拥有glLoadMatrix的位置。

于 2013-09-09T10:37:45.203 回答