glPushMatrix()/ glPopMatrix()不起作用

时间:2014-09-01 17:15:15

标签: opengl matrix transformation

我是opengl的新手。在我的代码中,我使用glPushMatrix()/ glPopMatrix()并在使用 glPushMatrix()/ glPopMatrix()后绘制我的图片。但它不起作用换句话说,我的鼠标控件不会改变变量nScale。

1 个答案:

答案 0 :(得分:1)

您需要先应用转换发出您希望应用转换的绘制调用。您发布的代码具有以下顺序:

glPushMatrix();
glBegin(GL_QUADS);
...
glEnd();
glScalef(nScale, nScale, 1.0f);
glPopMatrix();

由于glScalef()在绘制调用之后出现,因此不会影响它们。然后glPopMatrix()调用将撤消glScalef()调用指定的转换。由于glScalef()glPopMatrix()之间没有平局调用,glScalef()调用无效。

如果要将比例因子应用于渲染的四边形,则需要在绘制调用之前移动glScalef()调用:

glPushMatrix();
glScalef(nScale, nScale, 1.0f);
glBegin(GL_QUADS);
...
glEnd();
glPopMatrix();