【问题标题】:JOGL Loading textures individually and using multiple at onceJOGL 单独加载纹理并一次使用多个
【发布时间】:2018-08-19 00:42:04
【问题描述】:

好的,我找不到一个好名字,所以我会更详细地解释一下。

我正在使用 LWJGL 制作游戏,并且已经完成了一些基本渲染,但现在我想做一些更高级的事情。

情况如下:

我生成了一个网格(位置、法线、纹理坐标、索引),目前可以支持 1 个纹理,如果我有一个包含所有纹理的图像,那就太好了,但遗憾的是,情况并非如此.我对每个纹理都有一个单独的图像,需要单独加载。

现在,我看到了一种方法可以做到这一点,但它似乎并不实用,也不像是对内存的良好使用。 - 将所有纹理加载到一张图像中,并保存每个纹理在该图像中的位置,以便与纹理坐标一起使用。

纹理应该混合在一起,硬编码任何东西都不是一种选择,因为我希望能够轻松实现修改,并且可以从 1(最佳情况)到 65,536+ 纹理(最坏的情况)能够在同一个“网格”中使用。

【问题讨论】:

  • 纹理图集是您的最佳选择,所有数字内容创建工具都支持创建纹理图集,而无需单独的补丁相互融合。拥有 65K 个单独的 OpenGL 纹理对象是完全不可行的,因为即使 glBindTexture() 也会消耗您的帧时间预算。如果可能最多 256 个纹理,您可以考虑使用 OpenGL 阵列纹理,将单个纹理作为阵列层。然而,这仅在所有纹理具有相同尺寸时才有效。
  • 我不希望使用纹理图集的原因是因为我不知道将加载什么内容。由于我想修改这个游戏,我必须在运行时生成它,同时还要将位置存储在那个地图集中。我还必须强制执行最大纹理大小,这不是我想要的。 @httpdigest

标签: java opengl dynamic textures lwjgl


【解决方案1】:

我只是打算使用纹理图集,因为做其他任何事情似乎都不切实际。感谢@httpdigest 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多