是glTranslation()函数给出opengl中对象的位置?

时间:2011-04-02 06:44:02

标签: opengl

如果我在平面上有一个物体,它的平移值是glTranslatef(0,10,-5)那么我可以假设我的物体位置是(0,10,-5)吗?翻译是否给出了对象的位置?

1 个答案:

答案 0 :(得分:1)

不,glTranslatef()设置一个矩阵,确保在此语句之后绘制的所有对象按给定的数量进行转换。如果您只想翻译(位置)一个对象,请使用以下内容。

glLoadIdentity()
glPushMatrix();
glTranslatef(0,10,-5);
//DrawObjectOne
glPopMatrix();
//DrawObjectTwo

此代码执行以下操作:

首先它加载单位矩阵,这实际上意味着位置,旋转或比例没有变化。 然后将新矩阵推到矩阵堆栈上。对当前WorldMatrix的所有更改都将保留,直到调用glPopMatrix()。

我们通过设置(0,10,-5)的平移来修改当前世界矩阵,然后我们在该位置绘制该对象。

现在我们弹出当前的世界矩阵,当前的世界矩阵现在消失了,我们回到之前的WorldMatrix(这是单位矩阵)

然后我们绘制对象2,它只是在(0,0,0)绘制。