2017-02-20 25 views
0

DXGI_FORMAT_R32G32B32A32_TYPELESS 유형의 ID3D11Texture2D 텍스처를 DXGI_FORMAT_B8G8R8A8_TYPELESS 유형의 텍스처 (또는 다른 32 비트 RGBA 유형)로 효율적으로 변환해야합니다. 기본적으로 픽셀 텍스처 당 128 비트를 픽셀 당 32 비트로 줄입니다. ID3D11DeviceContext :: CopyResource-method 같은 형식 변환을 처리 할 수없는 것 같습니다. 이를 달성하기 위해 쉐이더를 사용해야합니까? 그렇다면 셰이더를 CopyResource 메서드와 함께 사용할 수 있습니까, 아니면 전체 렌더링 파이프 라인을 설정해야합니까? CPU에서 변환을 시도했지만 속도가 너무 느립니다.DXGI 형식 간의 RGBA 데이터 변환

답변

1

일반적으로 GPU를 사용하여 소스 형식 텍스처의 '전체 화면 쿼드'를 대상 형식의 렌더링 대상에 렌더링하는 가장 빠른 방법입니다. 이러한 제한은 렌더링 대상 형식이 지원되는 Direct3D 하드웨어 기능 수준을 기반으로합니다. 예를 들어 최신 드라이버가있는 모든 기능 수준에서 DXGI_FORMAT_B8G8R8A8_UNORM은 렌더링 대상으로 지원되지만 DXGI_FORMAT_B8G8R8A8_SNORM은 지원되지 않을 수 있습니다.

가능한 모든 DXGI 포맷 변환을위한 CPU 기반의 대체를 들어 MSDNDirect3D Feature Levels

를 참조 DirectXTex를 참조하십시오.