1

サンプルコードに従って、黒い背景に長方形を表示しようとしましたが、表示されていないようでした。私がしたことは

    private static void initGL(){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity(); 
    glOrtho(0,Display.getWidth(),0,Display.getHeight(),-1,1);
    glMatrixMode(GL_MODELVIEW);

    glDisable(GL_DEPTH_TEST); //2D mode

    glColor3f(0.5f, 0.0f, 1.0f); 
    glBegin(GL_QUADS); 
        glVertex2f(-0.75, 0.75);
        glVertex2f(-0.75, -0.75);
        glVertex2f(0.75, -0.75);
        glVertex2f(0.75, 0.75);
    glEnd();
}

黒い背景以外は画面に何も表示されません。私が何を間違えたのか誰か知っていますか?私はEclipseでlwjglを使用しています。

4

2 に答える 2

1

まず最初に: 全体を実行するだけです。

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); 
glOrtho(0,Display.getWidth(),0,Display.getHeight(),-1,1);
glMatrixMode(GL_MODELVIEW);

プログラム中に一度、おそらく実行した直後にDisplay.create()

また、間違った頂点を使用してテッセレーションを行っています。あなたが書いた

glVertex2f(-0.75, 0.75);
glVertex2f(-0.75, -0.75);
glVertex2f(0.75, -0.75);
glVertex2f(0.75, 0.75); 

これは、(-0.75, -0.75)ピクセルから (0.75, 0.75) ピクセルまでの長方形を描くことを意味します。これは小さすぎて気付かない。私の推測ではglVertex2f、ディスプレイ幅の一部を扱っていると想定されています。そうではありません。glVertex2f実際の座標を扱いますが、それとは異なり、小数ピクセルを許可するだけglVertex2iです (これは信じられないかもしれませんが、アニメーションをよりスムーズにするのに役立ちます)。何かのようなもの

glVertex2f(100F, 100F);

(100, 100) に頂点を配置し、実質的には

glVertex2i(100, 100);

また、OpenGL の座標系の原点 (0, 0) は左下にあり、従来の座標系とは異なり、数学クラスの座標系の最初の象限のように動作するため、負のピクセルが画面外にレンダリングされることに注意してください。左上が (0, 0) のコンピューター座標系。

黒の背景については、LWJGLDisplayはデフォルトで黒の背景を持っているため、ディスプレイの幅と高さ全体をカバーする背景色でクワッドを描画することをお勧めします。1 つのクワッドは、パフォーマンスに実際には影響しません。

于 2013-05-17T03:17:32.347 に答える
0

glVertex2fは同じサイズの単位を使用するglOrthoため、ディスプレイの幅と高さが 10 以下などの 1 の単位でない限り、何も表示されない可能性があります。

于 2013-05-17T04:11:16.280 に答える