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

ヒープ オプション。列挙定数のビットごとの OR の組み合わせ D3D12_HEAP_FLAGS

[in] pDesc

型: const D3D12_RESOURCE_DESC*

リソースを記述 するD3D12_RESOURCE_DESC 構造体へのポインター。

[in] InitialResourceState

種類: D3D12_RESOURCE_STATES

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 フラグを持つテクスチャである場合は、クリア操作が最も一般的に呼び出される値を選択する必要があります。 クリア操作は他の値で呼び出すことができますが、これらの操作は、リソースの作成に渡された値と一致する場合ほど効率的になりません。

D3D12_RESOURCE_DIMENSION_BUFFERを使用する場合は、pOptimizedClearValue を に設定するnullptr必要があります。

[in] riidResource

型: REFIID

ppvResource で返されるリソース インターフェイスのグローバル一意識別子 (GUID) への参照。

riidResource は最も一般的に ID3D12ResourceGUID ですが、任意のインターフェイスの 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ボリューム タイル リソースに関するページを参照してください。

このメソッドは、複数のスレッドによって同時に呼び出される場合があります。

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
Library D3D12.lib
[DLL] D3D12.dll

こちらもご覧ください

CreatePlacedResource

CreateReservedResource

D3D12_HEAP_FLAGS

ID3D12Device