DirectX11 SwapChain 强制纹理格式

问题描述 投票:0回答:1
ID3D11Texture2D* pTexture = nullptr;
HRESULT hrGetBuffer = pSwapChain->GetBuffer(
    0, 
    __uuidof(ID3D11Texture2D), 
    reinterpret_cast<void**>(&pTexture)
);

是否可以强制纹理采用特定格式?例如,

DXGI_FORMAT_B8G8R8A8_UNORM

或者有没有库可以做到这一点?

directx texture-mapping direct3d11
1个回答
0
投票

对于交换链,“后备缓冲区”的格式通过

CreateSwapChain
方法或旧的
D3D11CreateDeviceAndSwapChain
方法提供给 DXGI。

后缓冲区格式的有效格式是有限的,并且基于 Direct3D 硬件功能级别:

  • DXGI_FORMAT_B8G8R8A8_UNORM
    始终支持(假设 DXGI 1.1 或更高版本)。

  • 功能级别 9.3 或更高版本支持
  • DXGI_FORMAT_R8G8B8A8_UNORM
    DXGI_FORMAT_R8G8B8A8_UNORM_SRGB

  • 功能级别 10.0 或更高版本支持
  • DXGI_FORMAT_R10G10B10A2_UNORM
    DXGI_FORMAT_R16G16B16A16_FLOAT

  • DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
    在某些功能级别 10.0 或更高版本的硬件上可选择支持。

请参阅此博客系列了解更多信息。特别是 sRGB 格式的“旧”与“新”处理。

© www.soinside.com 2019 - 2024. All rights reserved.