2

我正在尝试并排绘制不同颜色的 2 个正方形,我的问题是我无法让 glTranslatef 将我的第二个正方形向右移动,第二个正方形只是在第一个正方形上绘制。

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);   
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glPointSize(10);

    glBegin(GL_QUADS);

        glColor3f(0.0,1.0,0.0);
        drawSquare();

        glTranslatef(10,0,0);

        glColor3f(1.0,0.0,0.0);
        drawSquare();

    glEnd();    

    glFlush();  // Process all OpenGL routines
}

void drawSquare()
{
    glVertex3f(0,0,0);
    glVertex3f(10,0,0);
    glVertex3f(10,10,0);
    glVertex3f(0,10,0);
}
4

2 回答 2

8

你不能在一个glBegin/glEnd块内翻译,你已经把它分成两个块。

我建议开始glGetError()在你的代码中使用,它会帮助你发现这样的错误。

于 2012-10-09T16:23:36.010 回答
7

在 glBegin 和 glEnd 之间只允许使用特定的 OpenGL 命令子集。因此,当您在这两个调用之间调用 glTranslate 时,它​​会被忽略。

从显示中删除 glBegin 和 glEnd,并放入 drawSquare - 这应该可以工作。

于 2012-10-09T16:25:08.970 回答