glTranslatef在glBegin中没有工作.. glEnd

kev*_*670 2 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);
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 8

你无法在一个glBegin/glEnd区块内翻译,你可以把它分成两个区块.

我建议glGetError()你开始在你的代码中使用它,它会帮你找到这样的错误.


小智 7

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

从显示中删除glBegin和glEnd,并放入drawSquare - 这应该有效.