4

LWJGL と Slick フレームワークを使用してテクスチャを OpenGL アプリケーションにロードしています。

私はこの画像を使用しています:日本の国旗、テクスチャに使用

そして、このコードはテクスチャをインポートして利用します:

    flagTexture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("japan.png"));

……

    flagTexture.bind();

    GL11.glColor3f(1.0f, 1.0f, 1.0f);
    GL11.glPushMatrix();

    GL11.glTranslatef(0.0f, 0.0f, -10.0f);

    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0.0f, 0.0f);
    GL11.glVertex2f(0.0f, 0.0f);
    GL11.glTexCoord2f(1.0f, 0.0f);
    GL11.glVertex2f(2.5f, 0.0f);
    GL11.glTexCoord2f(1.0f, 1.0f);
    GL11.glVertex2f(2.5f, 2.5f);
    GL11.glTexCoord2f(0.0f, 1.0f);
    GL11.glVertex2f(0.0f, 2.5f);
    GL11.glEnd();

    GL11.glPopMatrix();

しかし、最終結果は次のようになります。 テクスチャが頂点パラメータに伸びていない

GL_REPEAT などの特別な設定は使用していません。どうしたの?指定された頂点をテクスチャで埋めるにはどうすればよいですか?

4

3 に答える 3

9

テクスチャが最も近い 2 のべき乗までパディングされているように見えます。ここには 2 つの解決策があります。

  1. テクスチャを最も近い 2 のべき乗まで伸ばします。
  2. テクスチャのサイズと最も近い 2 のべき乗との差を計算し、テクスチャ座標を から および に変更1.0ftextureWidth/nearestPowerOfTwoWidthますtextureHeight/nearestPowerOfTwoHeight

2 の累乗でないテクスチャを許可する特定の LWJGL メソッドもあるかもしれません。それを調べてください。

于 2012-05-12T23:16:15.447 に答える
0

うまくいけば、このリンクはいくつかの助けになるでしょう

http://www.lwjgl.org/wiki/index.php?title=Slick-Util_Library_-_Part_1_-_Loading_Images_for_LWJGL

あなたがここでやっていることと非常によく似ているように見えます。

GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0,0);
GL11.glVertex2f(100,100);
GL11.glTexCoord2f(1,0);
GL11.glVertex2f(100+texture.getTextureWidth(),100);
GL11.glTexCoord2f(1,1);
GL11.glVertex2f(100+texture.getTextureWidth(),100+texture.getTextureHeight());
GL11.glTexCoord2f(0,1);
GL11.glVertex2f(100,100+texture.getTextureHeight());
GL11.glEnd();
于 2012-05-12T23:15:14.057 に答える