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

标签 java image load textures lwjgl

嘿,我想知道是否有一种方法可以只获取图像的一部分并将其转换为 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/

相关文章:

css - 如何在 codeigniter 中加载 css?

java - Java中链表头引用分配给链表对象

java - 如何在包含文本的页面上打印脚注?

java - 关于向上转换与动态绑定(bind)的混淆

html - 在底部对齐具有不同尺寸和标题的缩略图图像

c# - 如何将图像添加到 System.Windows.Forms.ListBox?

html - 如何 Hook DOM 加载事件?

JavaFX:是否有整数属性允许空值并提供 greaterThan 和 lessThan 等方法?

html - 当网站调整为较小的宽度时,我在图像上的 href 标签不起作用

jsf-2 - 加载页面时显示 growl primefaces jsf2