다음을 통해 공유


기본 질감 매핑

기본 텍스처 매핑을 사용하면 GPU와 CPU 간에 이미지 데이터를 공유하는 동안 복사 및 메모리 사용량이 줄어듭니다. 그러나 특정 상황에서만 사용해야 합니다. 표준 스위즐 레이아웃은 여러 레이아웃에서 데이터 복사 또는 스위즐링을 방지합니다.

개요

기본 텍스처 매핑은 개발자에게 첫 번째 선택이 되어서는 안 됩니다. 개발자는 먼저 불연속 GPU에 친숙한 방식으로 코딩해야 합니다(즉, 대부분의 텍스처에 대한 CPU 액세스 권한이 없으며 CopySubresourceRegion1사용하여 업로드). 그러나 특정 경우에 CPU와 GPU는 동일한 데이터에서 자주 상호 작용할 수 있으므로 기본 텍스처 매핑은 전원을 절약하거나 특정 어댑터 또는 아키텍처에서 특정 디자인 속도를 높이는 데 도움이 됩니다. 애플리케이션은 이러한 사례를 감지하고 불필요한 복사본을 최적화해야 합니다.

D3D11.3에서는 D3D11_TEXTURE_LAYOUT_UNDEFINED(D3D11_TEXTURE_LAYOUT 열거형의 한 멤버)로 만든 텍스처와 CPU 액세스가 없는 텍스처가 자주 GPU 렌더링 및 샘플링에 가장 효율적입니다. 성능 테스트 시, 이러한 텍스처는 CPU 액세스가 있는 D3D11_TEXTURE_LAYOUT_UNDEFINED, CPU 액세스가 있는 D3D11_TEXTURE_LAYOUT_64K_STANDARD_SWIZZLE, 그리고 어댑터 간 지원을 위한 D3D11_TEXTURE_LAYOUT_ROW_MAJOR와 비교해야 합니다.

CPU 액세스와 함께 D3D11_TEXTURE_LAYOUT_UNDEFINED 사용하면 WriteToSubresource , ReadFromSubresource, (포인터에 대한 애플리케이션 액세스 제외) 및 매핑 해제메서드를 사용할 수 있습니다. 하지만 GPU 액세스의 효율성을 희생할 수 있습니다. CPU 액세스와 함께 D3D11_TEXTURE_LAYOUT_64K_STANDARD_SWIZZLE를 사용하면 WriteToSubresource, ReadFromSubresource, (애플리케이션에 대한 유효한 포인터를 반환함) 및 매핑 해제을 할 수 있습니다. CPU 액세스로 D3D11_TEXTURE_LAYOUT_UNDEFINED 이상의 GPU 액세스 효율성을 희생할 수도 있습니다.

일반적으로 애플리케이션은 대부분의 텍스처를 D3D11_TEXTURE_LAYOUT_UNDEFINED 형식으로, GPU에서만 접근 가능하도록 생성해야 합니다.

매핑 기본 텍스처 기능 이전에는 다차원 데이터에 대한 표준화된 레이아웃이 하나만 있었습니다. "선형"( "row-major"라고도 함). 맵 기본값을 사용할 수 있는 경우 애플리케이션은 USAGE_STAGING 및 USAGE_DYNAMIC 텍스처를 피해야 합니다. USAGE_STAGING 및 USAGE_DYNAMIC 텍스처는 선형 레이아웃을 사용합니다.

D3D11.3(및 D3D12)에는 표준 다차원 데이터 레이아웃이 도입되었습니다. 이렇게 하면 데이터를 복사하거나 여러 레이아웃 간에 데이터를 스위즐링하지 않고도 여러 처리 단위가 동일한 데이터에서 작동할 수 있습니다. 표준화된 레이아웃을 사용하면 네트워크 효과를 통해 효율성을 높일 수 있으며, 알고리즘이 특정 패턴을 가정하여 지름길을 찾을 수 있습니다.

이 표준 스위즐은 하드웨어 기능이며 모든 GPU에서 지원되지 않을 수 있습니다.

D3D11.3 API들

D3D12와 달리 D3D11.3은 기본적으로 텍스처 매핑을 지원하지 않으므로 D3D11_FEATURE_DATA_D3D11_OPTIONS2쿼리해야 합니다. 표준 스위즐을 쿼리하기 위해서는 ID3D11Device::CheckFeatureSupport를 호출하고, D3D11_FEATURE_DATA_D3D11_OPTIONS2StandardSwizzle64KBSupported 필드를 확인해야 합니다.

다음 API는 텍스처 매핑을 참조합니다.

열거형 데이터

구조

  • D3D11_TEXTURE2D_DESC1: 2D 텍스처를 설명합니다. CD3D11_TEXTURE2D_DESC1 도우미 구조를 주목하십시오.
  • D3D11_TEXTURE3D_DESC1: 3D 텍스처를 설명합니다. CD3D11_TEXTURE3D_DESC1 도우미 구조체를 주목하십시오.

방법

Direct3D 11.3 기능