2017-09-22 1 views
1

안녕하세요.DirectX. 한 픽셀 형식에서 다른 형식으로 텍스처를 변환하는 방법 (RGBA -> BGRA)?

DirectX의 경우 초보자이므로 많은 것을 알지 못합니다.

비디오 카드의 메모리에 RGBA 형식의 텍스쳐가 있습니다 (DXGI_FORMAT_R8G8B8A8_UNORM). 이것은 도청 된 게임 버퍼입니다. 내용을 컴퓨터의 메모리에 복사하기 전에이 텍스처를 BGRA (DXGI_FORMAT_B8G8R8A8_UNORM) 형식의 으로 변환해야합니다. 한 픽셀 형식에서 다른 형식으로 텍스처를 변환하는 방법 비디오 카드의 의미는 무엇입니까? 나는이 솔루션을 이해하지 못하는

// DXGI_FORMAT_R8G8B8A8_UNORM 
ID3D11Texture2D *pTexture1; 

// DXGI_FORMAT_B8G8R8A8_UNORM 
ID3D11Texture2D *pTexture2; 
D3D11_TEXTURE2D_DESC desc2 = {}; 
desc2.Width = swapChainDesc.BufferDesc.Width; 
desc2.Height = swapChainDesc.BufferDesc.Height; 
desc2.MipLevels = 1; 
desc2.ArraySize = 1; 
desc2.Format = DXGI_FORMAT_B8G8R8A8_UNORM; 
desc2.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; 
desc2.SampleDesc.Count = 1; 
desc2.Usage = D3D11_USAGE_DEFAULT; 
desc2.MiscFlags = 0; 

void pixelConvert(ID3D11Texture2D *pTexture1, ID3D11Texture2D *pTexture2) 
{ 
    // 
    // Code.... 
    // 
} 

: DX11 convert pixel format BGRA to RGBA 그것은 GPU에

+0

가능한 한 [DX11을 RGB 형식으로 변환하는 BGRA] (https://stackoverflow.com/questions/24148164/dx11-convert-pixel-format-bat-bgra-to-rgba) 복제가 가능합니다. – user1810087

+0

그 답을 이해할 수 없습니다. –

답변

2

을 완료되지는 간단한 해결책은 '전체 화면 쿼드'로 대상을 렌더링 단지 다른 텍스처를 렌더링하는 것입니다 . 특화된 쉐이더는 필요 없으며 단순한 렌더링입니다. 텍스처를로드 할 때 표준 Red, Green 및 Blue 채널에 필요한 경우 'swizzled'되고 렌더링 타겟에 쓸 때 형식에 따라 동일한 결과가 발생합니다. 모든 Direct3D Hardware Feature Levels에서 작동하는 솔루션을 필요로하는 경우

특히 DirectX Tool Kit에서 SpriteBatchthis tutorial를 참조하십시오. D3D_FEATURE_LEVEL_10_0 이상이 필요한 경우 PostProcess을 참조하십시오. 이는 전체 렌더링 대상에 항상 쿼드를 그려야한다는 사실에 최적화되어 있습니다.

CPU 솔루션을 원하면 DirectXTex을 참조하십시오.

관련 문제