У меня есть текстура, загружаемая из файла .DDS с использованием метода D3DX11CreateTextureFromFile(). DDS создается с использованием сжатия блока сжатия 1, поэтому, когда я запрашиваю IDXGISurface1 из ID3D11Texture2D, формат пикселя поверхности DXGI_FORMAT_BC1_UNORM.Изменение формата пикселя ID3D11Texture2D
Итак, мой вопрос: могу ли я изменить (преобразовать) формат поверхности в DXGI_FORMAT_B8G8R8A8_UNORM. Я попробовал метод ID3D11DeviceContext::CopyResource, но, похоже, он не может конвертировать из BC1 в 32bppBGRA.
Любые предложения приветствуются.
Если это просто одноразовый, вы можете конвертировать и сохранять в требуемом формате с помощью 'DxTex.exe' –
Полноэкранный квадрат (или полноэкранный треугольник) + rendertarget - это в значительной степени единственный способ пойти (или небольшой вычислить shader, но я сомневаюсь, что это будет лучше, чем пиксельный шейдер в вашем случае использования, скорее всего, медленнее). CopyResource не будет работать, поскольку это похоже на прямую копию, а не на конверсию. – catflier