0

OpenGL で自分のゲームに HUD を描画しようとしています。いくつかのテクスチャを使用して作成し、それらを 2D シーンに適用することにしました。Java と LWJGL を使用しています。これはコードです:

public void drawHUD1()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800, 0, 600, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_LIGHTING);
    glPushMatrix();
    glClear(GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, arrows[0]);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f,0.0f);
    glVertex2f(60f,60f);
    glTexCoord2f(1.0f,0.0f);
    glVertex2f(90f,60f);
    glTexCoord2f(1.0f,1.0f);
    glVertex2f(90f,90f);
    glTexCoord2f(0.0f,1.0f);
    glVertex2f(60f,90f);
    glEnd();
    glDisable(GL_TEXTURE_2D);
    glPopMatrix();
    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    float aspect = (float) width / height;
    GLU.gluPerspective(45.0f, aspect, 0.1f, 1000); 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
}

実行すると、3D パーツは正しくレンダリングされますが、テクスチャの兆候はありません。メソッドを呼び出すことを思い出したので、それは可能な答えではありません。また、テクスチャが正しく読み込まれていることを確認しました。誰でも私を助けることができますか?

4

1 に答える 1

0

最初の関数呼び出しで「不可能な」エラーが表示された場合は、ライブラリ コードであっても、以前の呼び出しによって設定された可能性があります。

成功が返されるまで、ループ内で glError() を呼び出して、エラーをクリアしてみてください。次に、呼び出すすべての関数をチェックするための白紙の状態になります。これは単なるハックです。コードを出荷する際には絶対に行わないでください。

ただし、コードを単純化することも試みなければなりません。glDrawLine() を呼び出すだけで開始できます。それが機能する場合は、テクスチャのない三角形を 1 つ描画します。これにより、視点とモデルビューが正しいことが確認されます。その後、テクスチャリングを有効にします。

順不同の呼び出しが発生する可能性があります。EG GL_MODELVIEW にプッシュしているマトリックスは何ですか?

于 2014-01-09T21:10:21.350 に答える