gpt4 book ai didi

linux - linux 上 opengl 的 DirectDraw Surface (DDS) 格式的等价物是什么?

转载 作者:太空狗 更新时间:2023-10-29 11:26:00 29 4
gpt4 key购买 nike

DDS 格式已经为 directX 制作好了吗?所以我猜应该针对它而不是针对 openGL 进行优化。

那么,还有另一种格式吗?如果是,什么格式是一个不错的选择?什么原因?

另外,因为我在 linux 上工作,所以我也担心在 linux 上制作纹理。所以我需要一种可以由 gimp 导入/导出的格式。

最佳答案

DDS 格式可用于存储压缩纹理。如果您以与存储在 GPU 内存中相同的压缩方式存储文件,则无需为 GPU 存储解码和重新编码,而是直接将其移动到内存即可。

DDS格式基本上是用来存储S3 Texture Compression数据的。内部 DDS 格式 DTX3 和 DTX5 是 OpenGL 也支持的例如 S3TC 格式: http://www.opengl.org/wiki/S3_Texture_Compression

DDS 还可以存储预先计算的 mipmap。同样,这是减少加载时间的权衡(更大的文件大小),因为 mipmap 也可以在加载时计算。如您所见,如果您有正确的代码来解析 DDS 文件,例如有效负载将以其压缩形式获取,而不是在主机上解码,那么使用 DDS 就完全没问题了。

作为替代方案,@CoffeeandCode 指出了 KTX他的回答中的格式。这些文件使用不同的压缩算法 ( see here )。优点是这种压缩在较新的 OpenGL 版本中是强制性的,而 S3TC 压缩始终仅作为扩展可用(并且具有 patent problems )。我不知道它们在质量上的比较如何,也不知道您是否可以在目标平台上期待 OpenGL 4.3。

我的看法:如果您的目标是最近的硬件和 OpenGL 支持(OpenGL ES 3 或 OpenGL 4.3),您应该使用 KTX 格式和相应的纹理格式(libktx 将为您生成纹理对象).如果您需要能够在较旧的硬件上运行或者碰巧已经拥有大量 DDS 数据,您可能应该暂时坚持使用 DDS。

关于linux - linux 上 opengl 的 DirectDraw Surface (DDS) 格式的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23653068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com