Graphics 如何使用DirectX在运行时将RGBA转换为BC3(DXT5)?

Graphics 如何使用DirectX在运行时将RGBA转换为BC3(DXT5)?,graphics,3d,textures,directx-11,Graphics,3d,Textures,Directx 11,我正在尝试使用DirectX将纹理从RGBA像素格式转换为BC3。 我试过squish,但是速度太慢了,也许有一种方法可以用DirectX来实现,这样就可以在GPU上实现了 我也不想依赖特定的硬件(nVidia/AMD)。最理想的方法是在GPU上实现实时压缩算法。BC3没有这样的压缩器,但您可以扩展概念上类似的BC1压缩器。请参阅经典的BC1实时压缩文件及其GPU实现。Wavern的解决方案也适用于BC3的DXT5。看见使用DirectX 11功能级别11 .x硬件,您也可以考虑使用BC7。请记

我正在尝试使用DirectX将纹理从RGBA像素格式转换为BC3。 我试过squish,但是速度太慢了,也许有一种方法可以用DirectX来实现,这样就可以在GPU上实现了


我也不想依赖特定的硬件(nVidia/AMD)。

最理想的方法是在GPU上实现实时压缩算法。BC3没有这样的压缩器,但您可以扩展概念上类似的BC1压缩器。请参阅经典的BC1实时压缩文件及其GPU实现。

Wavern的解决方案也适用于BC3的DXT5。看见使用DirectX 11功能级别11 .x硬件,您也可以考虑使用BC7。请记住,这些“快速块压缩”方案的质量往往比您首选的传统“脱机”压缩低得多。另请参见。实际上,Intel ISPC BC7(从第二个链接)的速度没有离线压缩程序快。此外,BC7不太适合实时压缩,因为它有多个块模式,所以有很大的搜索空间。谢谢大家,这非常有用。我决定使用DirectXTex——使用压缩函数。因为我在使用.net(monogame),所以我写了一个小包装,效果非常好。有趣的是,我发现使用线程池压缩比创建自己的线程要快得多。