2

異なる色の 2 つの正方形を並べて描画しようとしています。私の問題は、glTranslatef で 2 番目の正方形を右に移動できないことです。2 番目の正方形は最初の正方形の上に描画されます。

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。2 つのブロックに分割されています。

コードで使用を開始することをお勧めしglGetError()ます。このような間違いを見つけるのに役立ちます。

于 2012-10-09T16:23:36.010 に答える
7

glBegin と glEnd の間では、OpenGL コマンドの特定のサブセットのみが許可されます。そのため、これら 2 つの呼び出しの間に glTranslate を呼び出すと、無視されます。

ディスプレイから glBegin と glEnd を削除し、drawSquare に入れます - これでうまくいくはずです。

于 2012-10-09T16:25:08.970 に答える