gpt4 book ai didi

java - 纹理未正确拉伸(stretch)。为什么会这样?

转载 作者:搜寻专家 更新时间:2023-11-01 01:28:20 24 4
gpt4 key购买 nike

我正在使用 LWJGL 和 Slick 框架将纹理加载到我的 OpenGL 应用程序。

我正在使用这张图片:Japanese flag, using for texture

以及导入和使用纹理的代码:

    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();

但最终结果变成了这样: Texture not stretching to the vertex-parameters

我没有使用任何特殊设置,如 GL_REPEAT 或类似的设置。这是怎么回事?如何使纹理填充给定的顶点?

最佳答案

看起来纹理被填充到最接近的 2 的幂。这里有两种解决方案:

  1. 将纹理拉伸(stretch)到最接近的 2 的幂。
  2. 计算纹理大小与最接近的 2 的幂之间的差异,并将纹理坐标从 1.0f 更改为 textureWidth/nearestPowerOfTwoWidthtextureHeight/nearestPowerOfTwoHeight

可能还有一些特定的 LWJGL 方法允许非二次方纹理,请研究一下。

关于java - 纹理未正确拉伸(stretch)。为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10568106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com