私は非常に単純なゲームに取り組んでおり、いくつかの基本的なテクスチャを含めることにしました。私はコードを試していましたが、何らかの理由で、テクスチャを正しくマッピングできない理由がわかりません。今、私は単純に緑色の長方形 (512 x 64 .png ファイル) をサイズ 640 x 480 の画面の下部にマップしようとしています。この緑色の長方形は地面を表しているはずです。これが私の失敗した試みの画像です:
関連するコードは次のとおりです。
作成した Boot クラスで、この関数を呼び出します。
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, gameWidth, gameHeight, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
作成したグラウンド クラスで、draw 関数を呼び出します。テクスチャは Boot クラスにロードされ、バインドして Ground.draw() 関数で使用する保護された変数として設定されます。
public void draw() {
this.texture.bind();
GL11.glLoadIdentity();
GL11.glTranslatef(0, 0, 0);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 480 - height);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(640, 480 - height);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(640, 480);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(0, 480);
GL11.glEnd();
}
また、上記に注意していただければ、GL11.glTranslatef 呼び出しがあります。この関数の 2 番目の引数を y 方向にさらに移動するのに十分な大きさにするだけで、地面のテクスチャを正しい位置に配置できますが、この方法ではやりたくありません。そもそもテクスチャがどのようにしてこの場所に配置されたのかはよくわかりません。その理由を突き止めたいと思います。