Java 我如何使用包装在.jar中的.png中的数据作为LWJGL中的纹理?

Java 我如何使用包装在.jar中的.png中的数据作为LWJGL中的纹理?,java,opengl,png,textures,lwjgl,Java,Opengl,Png,Textures,Lwjgl,所以我正在用LWJGL用Java制作一个基本游戏。我在.jar中打包了一个.png文件,当它仍在.jar中时,显然不能用于纹理。我能想到的从.jar中取出文件的唯一方法是创建一个Image对象 我尝试过使用getResource,但我目前设置它的方式是,它调用路径来创建FileInputStream(我使用的是一个PNGDecoder类,它接受PNG的FileInputStream并直接创建LWJGL纹理),因此它无法从.jar中准确读取.PNG 有人知道如何让PNGDecoder开心吗,或者有

所以我正在用LWJGL用Java制作一个基本游戏。我在.jar中打包了一个.png文件,当它仍在.jar中时,显然不能用于纹理。我能想到的从.jar中取出文件的唯一方法是创建一个Image对象

我尝试过使用getResource,但我目前设置它的方式是,它调用路径来创建FileInputStream(我使用的是一个PNGDecoder类,它接受PNG的FileInputStream并直接创建LWJGL纹理),因此它无法从.jar中准确读取.PNG


有人知道如何让PNGDecoder开心吗,或者有其他方法将packed.png转换为LWJGL纹理吗?

PNGDecoder
可能接受任何
InputStream
而不仅仅是
FileInputStream
。使用
getClass().getResourceAsStream(…)
直接获取.jar中.png文件的
InputStream
,而不需要先提取它。

+1如果解码器需要一个FileInputStream而不是一般的InputStream,这是愚蠢的。解码器确实需要一个InputStream(不一定是FileInputStream),但如果我像前面提到的@hfs那样指定它,而不是从getResource生成一个,那么它就像一个符咒。非常感谢!