ID3D12Device::CreateCommittedResource 메서드(d3d12.h)
힙이 전체 리소스를 포함할 만큼 크고 리소스가 힙에 매핑되도록 리소스와 암시적 힙을 모두 만듭니다.
통사론
HRESULT CreateCommittedResource(
[in] const D3D12_HEAP_PROPERTIES *pHeapProperties,
[in] D3D12_HEAP_FLAGS HeapFlags,
[in] const D3D12_RESOURCE_DESC *pDesc,
[in] D3D12_RESOURCE_STATES InitialResourceState,
[in, optional] const D3D12_CLEAR_VALUE *pOptimizedClearValue,
[in] REFIID riidResource,
[out, optional] void **ppvResource
);
매개 변수
[in] pHeapProperties
형식: const D3D12_HEAP_PROPERTIES*
리소스의 힙에 대한 속성을 제공하는 D3D12_HEAP_PROPERTIES 구조체에 대한 포인터입니다.
[in] HeapFlags
형식: D3D12_HEAP_FLAGS
D3D12_HEAP_FLAGS 열거형 상수의 비트 OR 조합인 힙 옵션입니다.
[in] pDesc
형식: const D3D12_RESOURCE_DESC*
리소스를 설명하는 D3D12_RESOURCE_DESC 구조체에 대한 포인터입니다.
[in] InitialResourceState
리소스의 초기 상태(D3D12_RESOURCE_STATES 열거형 상수의 비트 OR 조합)입니다.
D3D12_HEAP_TYPE_UPLOAD 힙과 함께 리소스를 만드는 경우 InitialResourceStateD3D12_RESOURCE_STATE_GENERIC_READ설정해야 합니다.
D3D12_HEAP_TYPE_READBACK 힙과 함께 리소스를 만드는 경우 InitialResourceStateD3D12_RESOURCE_STATE_COPY_DEST설정해야 합니다.
[in, optional] pOptimizedClearValue
형식: const D3D12_CLEAR_VALUE*
명확한 색의 기본값을 설명하는 D3D12_CLEAR_VALUE 구조를 지정합니다.
pOptimizedClearValue 명확한 작업이 가장 최적인 값을 지정합니다. 생성된 리소스가 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 또는 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 플래그가 있는 텍스처인 경우 clear 작업이 가장 일반적으로 호출되는 값을 선택해야 합니다. 다른 값으로 지우기 작업을 호출할 수 있지만 해당 작업은 값이 리소스 생성에 전달된 값과 일치하는 경우만큼 효율하지 않습니다.
D3D12_RESOURCE_DIMENSION_BUFFER사용하는 경우 pOptimizedClearValuenullptr
설정해야 합니다.
[in] riidResource
형식: REFIID
ppvResource반환할 리소스 인터페이스의 전역 고유 식별자(GUID)에 대한 참조입니다.
riidResource 가장 일반적으로 ID3D12ResourceGUID, 모든 인터페이스의 GUID 수 있습니다. 리소스 개체가 이 GUID대한 인터페이스를 지원하지 않으면 E_NOINTERFACE생성에 실패합니다.
[out, optional] ppvResource
형식: void**
생성된 리소스 개체에 대한 요청된 인터페이스 포인터를 수신하는 메모리 블록에 대한 선택적 포인터입니다.
ppvResourcenullptr
기능 테스트를 사용하도록 설정할 수 있습니다.
반환 값
형식: HRESULT
함수가 성공하면 S_OK반환합니다. 그렇지 않으면 HRESULT오류 코드반환합니다.
반환 값 | 묘사 |
---|---|
E_OUTOFMEMORY | 리소스를 만들 메모리가 부족합니다. |
다른 가능한 반환 값은 Direct3D 12 반환 코드 참조하세요.
발언
이 메서드는 힙이 전체 리소스를 포함할 만큼 크고 리소스가 힙에 매핑되도록 리소스와 힙을 모두 만듭니다. 만든 힙은 애플리케이션에서 힙 개체를 가져올 수 없으므로 암시적 힙이라고 합니다. 리소스에 대한 최종 참조를 해제하기 전에 애플리케이션은 GPU가 더 이상 이 리소스를 읽거나 쓰지 않도록 해야 합니다.
암시적 힙은 메서드가 애플리케이션에 컨트롤을 반환하기 전에 GPU 액세스를 위해 상주합니다. 또한 상주참조하세요.
리소스 GPU VA 매핑은 변경할 수 없습니다. ID3D12CommandQueue::UpdateTileMappings 및 볼륨 타일식 리소스참조하세요.
이 메서드는 여러 스레드에서 동시에 호출할 수 있습니다.
예제
D3D12Bundles 샘플은 다음과 같이 ID3D12Device::CreateCommittedResource 사용합니다.
꼭짓점 버퍼를 만듭니다.
auto heapProperties = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT);
auto resourceDesc = CD3DX12_RESOURCE_DESC::Buffer(SampleAssets::VertexDataSize);
ThrowIfFailed(m_device->CreateCommittedResource(
&heapProperties,
D3D12_HEAP_FLAG_NONE,
&resourceDesc,
D3D12_RESOURCE_STATE_COPY_DEST,
nullptr,
IID_PPV_ARGS(&m_vertexBuffer)));
Direct3D 12 참조
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | d3d12.h |
라이브러리 | D3D12.lib |
DLL | D3D12.dll |
참고 항목
CreatePlacedResource
CreateReservedResource