gpt4 book ai didi

java - 如何仅将部分图像用于 LWJGL

转载 作者:行者123 更新时间:2023-12-01 15:19:49 25 4
gpt4 key购买 nike

嘿,我想知道是否有一种方法可以只获取图像的一部分并将其转换为 LWJGL 的纹理。这是我加载图像并用作纹理的基本代码。 PNG 解码器来自 twl 库。预先感谢您的帮助。

int floorTexture = glGenTextures();
{
InputStream in = null;
try {
in = new FileInputStream("res/floor.png");
PNGdecoder decoder = new PNGdecoder(in);
ByteBuffer buffer = BufferUtils.createByteBuffer(4 * decoder.getWidth() * decoder.getHeight());
decoder.decode(buffer, decoder.getWidth() * 4, Format.RGBA);
buffer.flip();
in.close();
glBindTexture(GL_TEXTURE_2D, floorTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, decoder.getWidth(), decoder.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
glBindTexture(GL_TEXTURE_2D, 0);
} catch (FileNotFoundException ex) {
System.err.println("Failed to find the texture files.");
Display.destroy();
System.exit(1);
} catch (IOException ex) {
System.err.println("Failed to load the texture files.");
Display.destroy();
System.exit(1);
}
}

最佳答案

您可以将 PNG 解码为 BufferedImage,然后使用 getRGB() 提取您感兴趣的区域的数据。您可能需要一些额外的代码将 (A)RGB 整数转换为由GL。有关执行此操作的更详细示例,请查看此问题的答案 LWJGL Textures and Strings .

但是,在 GL 中,您通常使用纹理坐标来为要渲染的内容选择正确的子图像,而不是这样。

这种方法的优点是可以使用单个glDrawElements/glDrawArrays调用渲染不同纹理的多边形,提高渲染性能。

关于java - 如何仅将部分图像用于 LWJGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105741/

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