0

OpenGL/LWJGLでシンプルなボタンを作ろうとしているのですが、

2D QUAD を正しくレンダリングできますが、テクスチャを実装すると、次のようにクワッド全体の約 3/4 の部分だけがテクスチャ化されます。

テクスチャ座標を削除すると、次のようになります: https://dl.dropboxusercontent.com/u/60223805/glerror2.png

     none.bind();

     co.Enable2D_GUI();
     GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0);
        GL11.glVertex2f(co.width/2-200, co.height/2);
    GL11.glTexCoord2f(1, 0);
        GL11.glVertex2f(co.width/2+none.getTextureWidth(),co.height/2);
    GL11.glTexCoord2f(1, 1);
        GL11.glVertex2f(co.width/2+none.getTextureWidth(), co.height/2+none.getTextureHeight());
    GL11.glTexCoord2f(0, 1);
        GL11.glVertex2f(co.width/2-200, co.height/2+none.getTextureHeight());
     GL11.glEnd();
     co.Disable2D_GUI();

none はテクスチャ (slick-util ライブラリから) であり、関数 Enable2D_GUI および Disable2D_GUI は、オルソなどを有効または無効にするだけです。

何が間違っている可能性がありますか?私は OpenGL に非常に慣れていないので、私の質問が少しわかりにくい場合は申し訳ありません

これは私の Enable2D_GUI および Disable2D_GUI 関数です。

    public void Enable2D_GUI() {

     GL11.glMatrixMode (GL11.GL_PROJECTION);
     GL11.glPushMatrix();
     GL11.glLoadIdentity ();
     GL11.glOrtho (0, width, height, 0, 1, -1);
     GL11.glDisable(GL11.GL_DEPTH_TEST);
     GL11.glMatrixMode (GL11.GL_MODELVIEW);
     GL11.glPushMatrix();
    GL11.glLoadIdentity();
}

public void Disable2D_GUI() {
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPopMatrix();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPopMatrix();

    GL11.glDisable(GL11.GL_BLEND);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
}

3D QUAD でテストすると、どちらも機能しません。同じ結果です。これは私のOpenGL初期化コードです:

           GL11.glEnable(GL11.GL_TEXTURE_2D);
       GL11.glShadeModel(GL11.GL_SMOOTH);
       GL11.glClearColor(0f, 0.0f, 0.0f, 0.0f); 
       GL11.glClearDepth(1.0); 
       GL11.glEnable(GL11.GL_DEPTH_TEST);
       GL11.glDepthFunc(GL11.GL_LEQUAL); 

       GL11.glViewport(0, 0, width, height);

       GL11.glMatrixMode(GL11.GL_PROJECTION); 
       GL11.glLoadIdentity();

       GLU.gluPerspective(
             45.0f,
             (float)width/(float)height,
             0.5f,
             50.0f);


       GL11.glMatrixMode(GL11.GL_MODELVIEW);
       GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
4

1 に答える 1