ID3D12Device4::CreateCommittedResource1 メソッド (d3d12.h)
リソースと暗黙的なヒープ (必要に応じて保護されたセッション) の両方を作成します。これにより、ヒープはリソース全体を格納するのに十分な大きさになり、リソースはヒープにマップされます。 コード例については、「 ID3D12Device::CreateCommittedResource 」も参照してください。
構文
HRESULT CreateCommittedResource1(
[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, optional] ID3D12ProtectedResourceSession *pProtectedSession,
[in] REFIID riidResource,
[out, optional] void **ppvResource
);
パラメーター
[in] pHeapProperties
型: const D3D12_HEAP_PROPERTIES*
リソースのヒープのプロパティを提供する D3D12_HEAP_PROPERTIES 構造体へのポインター。
[in] HeapFlags
種類: D3D12_HEAP_FLAGS
ヒープ オプション。列挙定数のビットごとの OR の組み合わせ D3D12_HEAP_FLAGS 。
[in] pDesc
型: const D3D12_RESOURCE_DESC*
リソースを記述 するD3D12_RESOURCE_DESC 構造体へのポインター。
[in] InitialResourceState
D3D12_RESOURCE_STATES 列挙定数 のビットごとの OR の組み合わせとしてのリソースの初期状態。
D3D12_HEAP_TYPE_UPLOAD ヒープと共にリソースを作成する場合は、InitialResourceState を D3D12_RESOURCE_STATE_GENERIC_READ に設定する必要があります。
D3D12_HEAP_TYPE_READBACK ヒープと共にリソースを作成する場合は、InitialResourceState を D3D12_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 フラグを持つテクスチャである場合は、クリア操作が最も一般的に呼び出される値を選択する必要があります。 クリア操作は他の値で呼び出すことができますが、これらの操作は、リソースの作成に渡された値と一致する場合ほど効率的になりません。
D3D12_RESOURCE_DIMENSION_BUFFERを使用する場合は、pOptimizedClearValue を に設定するnullptr
必要があります。
[in, optional] pProtectedSession
種類: ID3D12ProtectedResourceSession*
コンテンツ保護のセッションを表すオブジェクトへの省略可能なポインター。 指定された場合、このセッションはリソースを保護する必要があることを示します。 ID3D12ProtectedResourceSession を取得するには、ID3D12Device4::CreateProtectedResourceSession を呼び出します。
[in] riidResource
型: REFIID
ppvResource で返されるリソース インターフェイスのグローバル一意識別子 (GUID) への参照。
riidResource は最も一般的に ID3D12Resource の GUID ですが、任意のインターフェイスの GUID である可能性があります。 リソース オブジェクトがこの GUID のインターフェイスをサポートしていない場合、 作成は E_NOINTERFACE で失敗します。
[out, optional] ppvResource
型: void**
作成されたリソース オブジェクトへの要求されたインターフェイス ポインターを受け取るメモリ ブロックへの省略可能なポインター。
ppvResource には を指定 nullptr
して、機能テストを有効にすることができます。 ppvResource が の場合、nullptr
オブジェクトは作成されません。pDesc が有効な場合、S_FALSEが返されます。
戻り値
型: HRESULT
関数が成功した場合は、S_OK を返します。 それ以外の場合は、 HRESULTエラー コードが返されます。
戻り値 | 説明 |
---|---|
E_OUTOFMEMORY | リソースを作成するためのメモリが不足しています。 |
その他の可能な戻り値については、「戻りコードDirect3D 12」を参照してください。
解説
このメソッドは、リソースとヒープの両方を作成します。これにより、ヒープはリソース全体を格納するのに十分な大きさになり、リソースはヒープにマップされます。 ヒープ オブジェクトはアプリケーションで取得できないため、作成されたヒープは暗黙的なヒープと呼ばれます。 リソースの最後の参照を解放する前に、アプリケーションで GPU がこのリソースの読み取りまたは書き込みを行えなくなることを確認する必要があります。
暗黙的なヒープは、メソッドがアプリケーションに制御を返す前に、GPU アクセス用に常駐させます。 「 レジデンシー」も参照してください。
リソース GPU VA マッピングは変更できません。 ID3D12CommandQueue::UpdateTileMappings とボリューム タイル リソースに関するページを参照してください。
このメソッドは、複数のスレッドによって同時に呼び出される場合があります。
要件
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |
Library | d3d12.lib |
[DLL] | d3d12.dll |