小编MAG*_*GYS的帖子

DX11 将像素格式 BGRA 转换为 RGBA

我目前有一个问题,即库创建了 BGRA 像素格式的 DX11 纹理。但是显示库只能正确显示RGBA。(这意味着颜色在渲染图像中交换)

环顾四周后,我发现了一个简单的 for 循环来解决问题,但性能不是很好,并且在更高的分辨率下扩展性很差。我是 DirectX 的新手,也许我只是错过了一个简单的功能来进行转换。

// Get the image data
unsigned char* pDest = view->image->getPixels();

// Prepare source texture
ID3D11Texture2D* pTexture = static_cast<ID3D11Texture2D*>( tex );

// Get context
ID3D11DeviceContext* pContext = NULL;
dxDevice11->GetImmediateContext(&pContext);

// Copy data, fast operation
pContext->CopySubresourceRegion(texStaging, 0, 0, 0, 0, tex, 0, nullptr);

// Create mapping 
D3D11_MAPPED_SUBRESOURCE mapped;
HRESULT hr = pContext->Map( texStaging, 0, D3D11_MAP_READ, 0, &mapped );

if ( FAILED( hr ) )
{
    return;
}

// Calculate size
const size_t …
Run Code Online (Sandbox Code Playgroud)

directx-11

5
推荐指数
1
解决办法
2730
查看次数

标签 统计

directx-11 ×1