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

Different OpenGL behaviors depending on Maya's viewport used

我有在 Maya 中显示简单 OpenGL 形状的 cpp 代码。 如果使用旧视口,那么我就得到了我想要的:沿 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 视口中有正确的行为?

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

因此,在旧视口中(您的结果是 'correct'),您将翻译连接到模型视图矩阵上,但在 2.0 的情况下,您可能将翻译连接到 projection matrix - 这会导致平移看起来是相对于屏幕,而不是视图。

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