我正在寻找一种支持 mipmap、cubemap 和 3d 纹理的格式,以便在 OpenGL ES 2.0 游戏上使用。在 Windows 上,我使用 .dds 格式,因为它支持 DXT 压缩。对于移动程序,我认为有些 .pkm 文件不支持多种纹理,而 .pvr 文件我“认为”依赖于 PowerVR 平台。所以;
-我可以将 .dds 与 ETC1 压缩一起使用吗?是否存在阻止我在 Windows 以外的平台上使用 .dds 的许可问题?
-其他 GPU 供应商的产品(Adreno、Mali 等)是否支持 .pvr 文件? (不是 PVRTC,只是带有 ETC1 压缩的 .pvr)
-或者是否有其他文件格式可以满足我的需要?
最佳答案
是的,您可以将 DDS 用于 ETC1。只需发明您自己的 FOURCC 代码。据我所知,dds 没有专利。
没有 GPU 供应商支持 pvr 文件格式(包括 PoverVX)。 GPU 供应商只关心压缩纹理数据(PVRTC、ETC、DXTC),而不关心文件格式(png、jpeg、dds、pvr)。解析文件格式以提取纹理数据(压缩或未压缩)是用户/应用程序的责任。
您可以使用任何适合您需要的文件格式。发明你自己的。例如,像这样:
[4 bytes] - width
[4 bytes] - height
[4 bytes] - format id (1 - etc1, 2 - dxt, 3 - ... whatver)
[4 bytes] - count of images (mipmaps/cubemaps/whatever)
[bytes] - data
关于opengl-es - ETC1 纹理的容器格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341608/