不同的OpenGL行为取决于Maya的视口使用

Lau*_*llo 6 c++ opengl maya

我有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视口中具有正确的行为?

Jas*_*onD 2

根据我的评论,这看起来像是翻译发生在与渲染不同的坐标系中,这表明我绑定了不同的矩阵堆栈。

因此,在旧视口(您的结果是“正确的”)中,您将翻译连接到模型视图矩阵,但在 2.0 的情况下,您可能将翻译连接到投影矩阵- 这将导致翻译看起来是相对于屏幕,而不是视图。

我建议确保在渲染调用中正确设置所有相关状态,例如在弄乱矩阵堆栈之前设置所需的 glMatrixMode() 等。