다음을 통해 공유


ID3D10Texture1D::Map 메서드(d3d10.h)

하위 리소스에 포함된 데이터에 대한 포인터를 가져와서 해당 하위 리소스에 대한 GPU 액세스를 거부합니다.

구문

HRESULT Map(
  [in]  UINT      Subresource,
  [in]  D3D10_MAP MapType,
  [in]  UINT      MapFlags,
  [out] void      **ppData
);

매개 변수

[in] Subresource

형식: UINT

하위 리소스의 인덱스 번호입니다. 자세한 내용은 D3D10CalcSubresource 를 참조하세요.

[in] MapType

형식: D3D10_MAP

리소스에 대한 CPU의 읽기 및 쓰기 권한을 지정합니다. 가능한 값은 D3D10_MAP 참조하세요.

[in] MapFlags

형식: UINT

GPU가 사용 중일 때 CPU가 수행해야 하는 작업을 지정하는 플래그입니다. 이 플래그는 선택 사항입니다.

[out] ppData

형식: void**

텍스처 리소스 데이터에 대한 포인터입니다.

반환 값

형식: HRESULT

이 함수가 성공하면 S_OK 반환합니다. 다른 제한 사항 및 Map 메서드에서 반환할 수 있는 오류 값 목록은 비고를 참조하세요.

설명

텍스처를 매핑하면 CPU가 텍스처의 하위 리소스에 있는 기본 데이터에 직접 액세스할 수 있습니다. 메서드가 성공하려면 매핑되는 텍스처를 적절한 플래그( D3D10_CPU_ACCESS_FLAG 참조)로 만들어야 하며 지정된 사용량( D3D10_USAGE 참조)은 D3D10_USAGE_DYNAMIC 또는 D3D10_USAGE_STAGING 합니다.

Map 메서드의 일반적인 오류는 다음 반환 값으로 표시됩니다.

항목 Description
DXGI_ERROR_WAS_STILL_DRAWING MapFlags가 D3D10_MAP_FLAG_DO_NOT_WAIT 지정하고 GPU가 리소스로 아직 완료되지 않은 경우 Map은 DXGI_ERROR_WAS_STILL_DRAWING 반환합니다.
DXGI_ERROR_DEVICE_REMOVED MapType에서 CPU 읽기 액세스를 허용하고 비디오 카드 제거된 경우 Map은 DXGI_ERROR_DEVICE_REMOVED 반환합니다.
 

위의 반환 값에 대한 자세한 내용은 DXGI_ERROR 참조하세요.

에는 다음과 같은 제한 사항이 있습니다.

  • 단일 하위 리소스를 여러 번 매핑할 수 없습니다. 즉, 이미 매핑된 하위 리소스에서 Map 을 호출하지 않습니다.
  • 파이프라인에 바인딩된 모든 하위 리소스는 렌더링 작업( 즉, ID3D10Device::D raw 이전)을 실행하기 전에 매핑을 해제해야 합니다.
애플리케이션은 기본 하위 리소스 데이터에 의미 있는 액세스를 위해 void pData 포인터를 적절한 형식으로 캐스팅해야 합니다. 예를 들어 다음 코드는 1D 하위 리소스의 각 텍셀을 읽는 방법을 보여 줍니다. 텍스처는 DXGI_FORMAT_R32G32B32A32_FLOAT 사용하여 만들어졌으며 pData는 이 메서드에 대한 성공적인 호출에서 텍스처 리소스 데이터 출력에 대한 포인터라고 가정합니다.

FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
  pTexels[col*4 + 0]; // Alpha
  pTexels[col*4 + 1]; // Blue
  pTexels[col*4 + 2]; // Green
  pTexels[col*4 + 3]; // Red
}

Direct3D 9와 Direct3D 10의 차이점:

Direct3D 10의 지도는 Direct3D 9의 리소스 잠금과 유사합니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d10.h
라이브러리 D3D10.lib

추가 정보

ID3D10Texture1D 인터페이스