Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image S3/DXT/BC压缩和纹理格式_Image_Opengl_Textures_Gpu - Fatal编程技术网

Image S3/DXT/BC压缩和纹理格式

Image S3/DXT/BC压缩和纹理格式,image,opengl,textures,gpu,Image,Opengl,Textures,Gpu,我知道使用DXT压缩是因为它节省了大量内存和带宽。然而,DXT的质量不是很好。 通常使用DXT吗?是否使用其他压缩格式?通常使用原始(无压缩)格式吗 我也读过关于BPTC纹理压缩的书,但我没有OpenGL4.x支持,只有OpenGL3.x支持 我知道这个问题没有一个完美的答案,但是一些“指南”会非常有用。通常没有。它因应用程序而异,许多游戏都允许您选择是否要压缩纹理,以质量换取性能 关于DXT/S3TC质量的问题是,它因压缩机而异;这是存在存储预压缩纹理的格式的部分原因。显然,它节省了存储和加载

我知道使用DXT压缩是因为它节省了大量内存和带宽。然而,DXT的质量不是很好。 通常使用DXT吗?是否使用其他压缩格式?通常使用原始(无压缩)格式吗

我也读过关于BPTC纹理压缩的书,但我没有OpenGL4.x支持,只有OpenGL3.x支持


我知道这个问题没有一个完美的答案,但是一些“指南”会非常有用。

通常没有。它因应用程序而异,许多游戏都允许您选择是否要压缩纹理,以质量换取性能

关于DXT/S3TC质量的问题是,它因压缩机而异;这是存在存储预压缩纹理的格式的部分原因。显然,它节省了存储和加载时间,但如果离线完成,压缩图像质量可以得到改善(类似于使用比长方体过滤器更复杂的东西预过滤mipmap)

同样,纹理压缩算法也不适用于纹理的所有用途(尤其是当尺寸不是4x4的倍数时)。对法线贴图所做的最糟糕的事情之一是使用常规DXT对其进行压缩。您可能听说过“3Dc”压缩,它实际上只是DXT5的一种变体,它保持了法线贴图所需的某些特性,但对于传统图像来说完全没有必要

至于BC和DXT之间的差异,主要取决于图像质量和多功能性。BC 1-3实际上与DXT 1-5相同,只有
BC6
BC7
需要D3D10+级硬件。GL所称的BPTC(
BC6H
BC7
)将4x4压缩块划分为单独的颜色渐变,以根据需要改善图像质量(这可能是
P
的来源)


如果您有对
BC6H
BC7
的硬件支持,您将获得更好的图像质量和对sRGB和浮点纹理压缩的支持,但您可以不使用这些东西(所有DX9游戏都有)。

@Mokosha:谢谢您建议的编辑。如果不是由社区来决定它的有效性,我自己也会批准它的。