次の方法で共有


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

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 に設定する必要があります。

[in] riidResource

型: REFIID

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

riidResource は、最も一般的に ID3D12Resourceの GUID ですが、任意のインターフェイスの GUID である可能性があります。 リソース オブジェクトがこの GUIDのインターフェイスをサポートしていない場合は、E_NOINTERFACEで作成が失敗します。

[out, optional] ppvResource

型: void**

作成されたリソース オブジェクトへの要求されたインターフェイス ポインターを受け取るメモリ ブロックへの省略可能なポインター。

ppvResourcenullptrして、機能テストを有効にすることができます。 ppvResource すると、オブジェクトは作成されません。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 リファレンスのコード例 参照してください。

必要条件

要件 価値
ターゲット プラットフォーム の ウィンドウズ
ヘッダー d3d12.h
ライブラリ D3D12.lib
DLL D3D12.dll

関連項目

CreatePlacedResource の

CreateReservedResource の

D3D12_HEAP_FLAGS

ID3D12Device