50 MB Image使用1 GB的RAM作为纹理

时间:2015-03-30 17:05:53

标签: java opengl textures lwjgl ram

我使用LWJGL创建OpenGL 3D应用程序。为了导入我的图像(用于UV映射)并将它们转换为纹理,我使用Slick2D:

bufferedImage = ImageIO.read(renderEngine.class.getResource("/images/textures/Stargate/image8192.png"));
objTextures.get(1)[0] = BufferedImageUtil.getTexture("", bufferedImage).getTextureID();

此方法(第二行)立即使用1 GB的RAM,但我的Image只有8192x8192的大小 - > 50 MB。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

原始空间的数量取决于许多事情。

什么是color model

data typesample model是什么?

使用TYPE_4BYTE_ABGR的图像类型会导致最小尺寸为256MB(8K * 8K * 4)。

使用int(而不是byte)的数据类型可以增加4x。

这只是阅读BufferedImage的第一行。