我有cpp代码,在Maya中显示简单的OpenGL形状.如果使用遗留视口,那么我正是我想要的:沿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();
}
Run Code Online (Sandbox Code Playgroud)
如何在"新"Maya视口中具有正确的行为?
根据我的评论,这看起来像是翻译发生在与渲染不同的坐标系中,这表明我绑定了不同的矩阵堆栈。
因此,在旧视口(您的结果是“正确的”)中,您将翻译连接到模型视图矩阵,但在 2.0 的情况下,您可能将翻译连接到投影矩阵- 这将导致翻译看起来是相对于屏幕,而不是视图。
我建议确保在渲染调用中正确设置所有相关状态,例如在弄乱矩阵堆栈之前设置所需的 glMatrixMode() 等。