更改ID3D11Texture2D像素格式

时间:2013-12-02 12:10:46

标签: directx textures direct3d directx-11

我有纹理,使用 D3DX11CreateTextureFromFile()方法从.DDS文件加载。 DDS是使用Block Compression 1压缩创建的,因此当我从 ID3D11Texture2D 查询 IDXGISurface1 时,表面的像素格式为DXGI_FORMAT_BC1_UNORM。

所以我的问题是:我可以将曲面的格式更改(转换)为DXGI_FORMAT_B8G8R8A8_UNORM。我尝试了ID3D11DeviceContext::CopyResource方法,但它似乎无法从BC1转换为32bppBGRA。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:3)

如果这是一次性或构建时的过程,请使用TexConv中包含的DirectXTex工具。如果需要在运行时执行此操作,可以将图像渲染为B8G8R8A8渲染目标,或使用DirectXTex库中包含的CPU转换代码。