glTranslatef在glBegin中没有工作.. glEnd

时间:2012-10-09 16:19:25

标签: opengl

我正在尝试不同颜色并排绘制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);
}

2 个答案:

答案 0 :(得分:8)

您无法在glBegin/glEnd区块内进行翻译,而是将其分解为两个区块。

我建议您在代码中使用glGetError(),它会帮助您找到这样的错误。

答案 1 :(得分:7)

glBegin和glEnd之间只允许某个OpenGL命令子集。因此,当您在这两个调用之间调用glTranslate时,它将被忽略。

从显示中删除glBegin和glEnd,然后输入drawSquare - 这应该可行。