【问题标题】:JOGL Large Texture Out Loading Out Of MemoryJOGL 大纹理输出加载内存不足
【发布时间】:2014-04-01 02:00:14
【问题描述】:

我正在使用TextureIO 在 JOGL 中加载一个 7 兆字节的纹理,但大约三秒后,程序崩溃,没有显示任何带有 OutOfMemoryError 的内容。

是的,我知道 7 兆字节的图像大小太离谱了,但我还是想加载它。顺便问一下,8192 x 4096 的纹理应该是 7 兆字节吗?

我已经考虑过将图像分成几个较小的纹理并一次加载一个的想法,但这与我已经编写的 sphere 类不能很好地配合。如果我绝对必须这样做,我想我可以这样做,但我很想避免这种特定的行动方案。

我没有在任何类型的嵌入式设备(Android、iPhone 等)上运行,我有 2 GB 的 RAM,不确定 GPU 的 RAM,但我愿意它足以容纳一个七兆字节的纹理。我安装了 32 位 Java 和 32 位 Windows 计算机,如果这些信息有帮助的话。

关于我为什么内存不足以及如何解决它的任何想法?

编辑:我可能正在做某事,每个有经验的人可能都在拍他们的额头,但错误显示:java.lang.OutOfMemoryError: Java heap space

我猜“Java 堆空间”部分将有助于解决问题。

【问题讨论】:

    标签: java opengl textures out-of-memory jogl


    【解决方案1】:

    只需尝试在启动时增加堆大小及其使用 -Xms 和 -Xmx 的最大大小: Oracle Java manual.

    请注意,您的显卡可能不支持这么大的纹理,请查看GL.GL_MAX_TEXTURE_SIZE

    您应该在its official forum 上询问有关 JOGL 的问题。

    【讨论】:

    • 对于GL.GL_MAX_TEXTURE_SIZE,它打印3379。那个数字是多少?千字节?方面?像素?
    • 另外,我如何找到当前的堆大小?
    • GL.GL_MAX_TEXTURE_SIZE 是一个 OpenGL 常量,允许获取以像素为单位的最大纹理大小(最大宽度或高度)。使用我的源代码获取最大纹理大小:github.com/gouessej/Ardor3D/blob/master/ardor3d-jogl/src/main/…
    • 使用分析器了解当前堆大小,例如 jvisualvm(JDK 提供)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多