ID3D11DeviceContext::Map 메서드(d3d11.h)
하위 리소스에 포함된 데이터에 대한 포인터를 가져오고 해당 하위 리소스에 대한 GPU 액세스를 거부합니다.
구문
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
매개 변수
[in] pResource
형식: ID3D11Resource*
ID3D11Resource 인터페이스에 대한 포인터입니다.
[in] Subresource
형식: UINT
하위 리소스의 인덱스 번호입니다.
[in] MapType
형식: D3D11_MAP
리소스에 대한 CPU의 읽기 및 쓰기 권한을 지정하는 D3D11_MAP 형식의 값입니다.
[in] MapFlags
형식: UINT
GPU가 사용 중일 때 CPU가 수행하는 작업을 지정하는 플래그입니다. 이 플래그는 선택 사항입니다.
[out, optional] pMappedResource
매핑된 하위 리소스에 대한 D3D11_MAPPED_SUBRESOURCE 구조체에 대한 포인터입니다. NULL 포인터에 대한 설명 섹션을 참조하세요.
반환 값
형식: HRESULT
이 메서드는 Direct3D 11 반환 코드 중 하나를 반환합니다.
MapFlags가 D3D11_MAP_FLAG_DO_NOT_WAIT 지정하고 GPU가 리소스로 아직 완료되지 않은 경우에도 이 메서드는 DXGI_ERROR_WAS_STILL_DRAWING 반환합니다.
MapType에서 CPU 읽기 액세스를 허용하고 비디오 카드 제거된 경우에도 이 메서드는 DXGI_ERROR_DEVICE_REMOVED 반환합니다.
이러한 오류 코드에 대한 자세한 내용은 DXGI_ERROR 참조하세요.
설명
지연된 컨텍스트에서 Map 을 호출하는 경우 D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE 또는 둘 다 MapType 매개 변수에만 전달할 수 있습니다. 다른 D3D11_MAP 형식의 값은 지연된 컨텍스트에서 지원되지 않습니다.
pMappedResource에 대한 NULL 포인터
pMappedResource 매개 변수는 D3D11_USAGE_DEFAULT 사용하여 만든 텍스처가 제공되고 API가 즉각적인 컨텍스트에서 호출될 때 NULL일 수 있습니다. 이렇게 하면 D3D11_TEXTURE_LAYOUT_UNDEFINED 사용하여 만든 경우에도 기본 텍스처를 매핑할 수 있습니다. 이 API 호출 이후 ID3D11DeviceContext3::WriteToSubresource 및/또는 ID3D11DeviceContext3::ReadFromSubresource를 사용하여 텍스처에 액세스할 수 있습니다.쓰기를 위해 매핑된 하위 리소스에서 읽지 않음
MapType 매개 변수에 D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD 또는 D3D11_MAP_WRITE_NO_OVERWRITE 전달하는 경우 앱이 D3D11_MAPPED_SUBRESOURCEpData 멤버가 가리키는 하위 리소스 데이터를 읽지 않는지 확인해야 합니다. 이렇게 하면 성능 저하가 발생할 수 있기 때문입니다. pData 지점이 PAGE_WRITECOMBINE 할당될 수 있는 메모리 영역이며 앱은 이러한 메모리와 연결된 모든 제한을 준수해야 합니다.다음 C++ 코드도 메모리에서 읽고 다음 x86 어셈블리 코드로 확장할 수 있으므로 성능 저하를 트리거할 수 있습니다.
C++ 코드:
*((int*)MappedResource.pData) = 0;
x86 어셈블리 코드:
AND DWORD PTR [EAX],0
적절한 최적화 설정 및 언어 구문을 사용하여 이 성능 저하를 방지합니다. 예를 들어 휘발성 포인터를 사용하거나 코드 크기 대신 코드 속도를 최적화하여 xor 최적화를 방지할 수 있습니다.
Windows Phone 8: 이 API가 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d11.h |
라이브러리 | D3D11.lib |