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

时间:2015-06-30 20:22:38

标签: c++ opengl maya

我有cpp代码,在Maya中显示简单的OpenGL形状。 如果使用遗留视口,那么我正是我想要的:沿x轴的箭头:

enter image description here

但是,如果我在ViewPort 2.0中使用相同的代码,则箭头会跟随相机移动:

enter image description here

enter image description here

只有在我应用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();
}

我怎样才能在&#34; new&#34; Maya viewport?

1 个答案:

答案 0 :(得分:2)

跟进我的评论,这看起来翻译发生在与渲染不同的坐标框架中,这向我建议绑定不同的矩阵堆栈。

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

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