Win32 API 日本語リファレンス
ホームGraphics.Direct3D12 › D3D12_DESCRIPTOR_HEAP_FLAGS

D3D12_DESCRIPTOR_HEAP_FLAGS

列挙型フラグ
基底型i4

メンバー 2

名前10進16進説明
D3D12_DESCRIPTOR_HEAP_FLAG_NONE00x0ヒープの既定の使用方法を示します。
D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE10x1

D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE フラグは、そのデスクリプターヒープがシェーダーから参照されるためにコマンドリストにバインドされることを示すために、必要に応じてデスクリプターヒープに設定できます。このフラグなしで作成されたデスクリプターヒープでは、利便性のために、シェーダーから可視のデスクリプターヒープへコピーする前に CPU メモリー上でデスクリプターをステージングするという選択肢がアプリケーションに与えられます。ただし、CPU 側で何もステージングせずに、シェーダーから可視のデスクリプターヒープへ直接デスクリプターを作成しても構いません。

ID3D12GraphicsCommandList::SetDescriptorHeaps でバインドされるデスクリプターヒープには D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE フラグが設定されていなければなりません。設定されていない場合、デバッグレイヤーがエラーを生成します。

D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE フラグを持つデスクリプターヒープは、ID3D12Device::CopyDescriptorsID3D12Device::CopyDescriptorsSimple の呼び出しでコピー元のヒープとして使用できません。これらは WRITE_COMBINE メモリーまたは GPU ローカルメモリーに配置されている可能性があり、そこからの読み取りは非常に非効率だからです。

このフラグが適用されるのは、CBV/SRV/UAV デスクリプターヒープとサンプラーデスクリプターヒープのみです。それ以外の種類のデスクリプターヒープはシェーダーから直接参照されないため、適用されません。D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE を指定して RTV/DSV ヒープを作成しようとすると、デバッグレイヤーのエラーになります。

公式ドキュメント

ヒープのオプションを指定します。

解説(Remarks)

この列挙型は D3D12_DESCRIPTOR_HEAP_DESC 構造体で使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS : int {
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1
} D3D12_DESCRIPTOR_HEAP_FLAGS;
[Flags]
public enum D3D12_DESCRIPTOR_HEAP_FLAGS : int
{
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1,
}
<Flags>
Public Enum D3D12_DESCRIPTOR_HEAP_FLAGS As Integer
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1
End Enum
import enum

class D3D12_DESCRIPTOR_HEAP_FLAGS(enum.IntFlag):
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1
// D3D12_DESCRIPTOR_HEAP_FLAGS (flags)
pub const D3D12_DESCRIPTOR_HEAP_FLAG_NONE: i32 = 0;
pub const D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE: i32 = 1;
// D3D12_DESCRIPTOR_HEAP_FLAGS
const (
	D3D12_DESCRIPTOR_HEAP_FLAG_NONE int32 = 0
	D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE int32 = 1
)
const
  D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0;
  D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1;
// D3D12_DESCRIPTOR_HEAP_FLAGS
pub const D3D12_DESCRIPTOR_HEAP_FLAG_NONE: i32 = 0;
pub const D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE: i32 = 1;
const
  D3D12_DESCRIPTOR_HEAP_FLAG_NONE* = 0
  D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE* = 1
enum D3D12_DESCRIPTOR_HEAP_FLAGS : int {
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 1,
}
#define global D3D12_DESCRIPTOR_HEAP_FLAG_NONE           0x0
#define global D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE 0x1
; ※フラグ列挙型。ビットORで組み合わせ可(例: FOO|BAR)。