我有cpp代码,可在Maya中显示简单的OpenGL形状。
如果使用旧版视口(viewport),那么我正好有想要的东西:沿x轴移动的箭头:
但是,如果我在ViewPort 2.0中使用相同的代码,则箭头将跟随摄像机的移动:
仅当我应用glTranslatef(我将需要使用)时才会发生这种情况。
这是一段代码:
for (int i=0;i<10;i++)
{
glPushMatrix();
glTranslatef(i,0,0);
glBegin(GL_LINES);
// Arrow
glVertex3f(0, y, z);
glVertex3f(1, y, z);
glVertex3f(1, y, z);
glVertex3f(0.5, y, z+0.5);
glVertex3f(1, y, z);
glVertex3f(0.5, y, z-0.5);
glEnd();
glPopMatrix();
}
如何在"new" Maya视口(viewport)中具有适当的行为?
最佳答案
根据我的评论,这似乎是平移发生在与渲染不同的坐标系中,这向我暗示绑定(bind)了不同的矩阵堆栈。
因此,在旧的视口(viewport)(结果为“正确”的情况下),您将平移连接到模型 View 矩阵上,但是在2.0情况下,您可能将平移连接到投影矩阵上-这将导致平移看起来像是相对于屏幕,而不是 View 。
我建议确保在渲染调用中正确设置所有相关状态,例如在与矩阵堆栈混淆之前设置所需的glMatrixMode()等。