ID3D11Device::CreateGeometryShaderWithStreamOutput メソッド (d3d11.h)
ストリーミング出力バッファーに書き込むことができるジオメトリ シェーダーを作成します。
構文
HRESULT CreateGeometryShaderWithStreamOutput(
[in] const void *pShaderBytecode,
[in] SIZE_T BytecodeLength,
[in, optional] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
[in] UINT NumEntries,
[in, optional] const UINT *pBufferStrides,
[in] UINT NumStrides,
[in] UINT RasterizedStream,
[in, optional] ID3D11ClassLinkage *pClassLinkage,
[out, optional] ID3D11GeometryShader **ppGeometryShader
);
パラメーター
[in] pShaderBytecode
型: const void*
標準ジオメトリ シェーダーとストリーム出力のコンパイル済みジオメトリ シェーダーへのポインター。 このポインターを取得する方法については、「 コンパイル済みシェーダーへのポインターの取得」を参照してください。
ジオメトリ シェーダーを使用せずにストリーム出力を作成するには、前のステージの出力シグネチャへのポインターを渡します。 この出力シグネチャを取得するには、 D3DGetOutputSignatureBlob コンパイラ関数を呼び出します。 前のステージ ( 頂点シェーダー ステージ やドメイン シェーダー ステージなど) のコンパイルされた シェーダーにポインターを渡すこともできます。 このコンパイルされたシェーダーは、データの出力シグネチャを提供します。
[in] BytecodeLength
種類: SIZE_T
コンパイルされたジオメトリ シェーダーのサイズ。
[in, optional] pSODeclaration
型: const D3D11_SO_DECLARATION_ENTRY*
D3D11_SO_DECLARATION_ENTRY配列へのポインター。 NumEntries > 0 の場合、NULL にすることはできません。
[in] NumEntries
型: UINT
ストリーム出力宣言のエントリの数 ( の範囲は 0 ~ D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT )。
[in, optional] pBufferStrides
型: const UINT*
バッファー ストライドの配列。各ストライドは、そのバッファーの要素のサイズです。
[in] NumStrides
型: UINT
pBufferStrides 内のストライド (またはバッファー) の数 (0 からD3D11_SO_BUFFER_SLOT_COUNTの範囲)。
[in] RasterizedStream
型: UINT
ラスタライザー ステージに送信されるストリームのインデックス番号 (0 ~ D3D11_SO_STREAM_COUNT - 1 の範囲)。 ラスター化するストリームがない場合は、D3D11_SO_NO_RASTERIZED_STREAM に設定します。
[in, optional] pClassLinkage
種類: ID3D11ClassLinkage*
クラス リンケージ インターフェイスへのポインター ( ID3D11ClassLinkage を参照)。値には NULL を指定できます。
[out, optional] ppGeometryShader
種類: ID3D11GeometryShader**
作成されたジオメトリ シェーダーを表す ID3D11GeometryShader インターフェイスへのポインターのアドレス。 他のパラメーターを検証するには、 これを NULL に設定します。検証に合格した場合、メソッドはS_OKではなくS_FALSEを返します。
戻り値
型: HRESULT
このメソッドは、 Direct3D 11 リターン コードのいずれかを返します。
注釈
CreateGeometryShaderWithStreamOutput の使用の詳細については、「Stream出力を使用して Geometry-Shader オブジェクトを作成する」を参照してください。
Windows 8 以降で使用できる Direct3D 11.1 ランタイムは、CreateGeometryShaderWithStreamOutput に対して次の新機能を提供します。
次のシェーダー モデル 5.0 の手順は、Direct3D 11.0 ランタイムのピクセル シェーダーとコンピューティング シェーダーでのみ使用できます。 Direct3D 11.1 ランタイムの場合、順序なしのアクセス ビュー (UAV) はすべてのシェーダー ステージで使用できるため、すべてのシェーダー ステージでこれらの手順を使用できます。
したがって、ジオメトリ シェーダーで次のシェーダー モデル 5.0 命令を使用すると、コンパイルされたジオメトリ シェーダーを pShaderBytecode に正常に渡すことができます。 つまり、 CreateGeometryShaderWithStreamOutput の呼び出しは成功します。
コンパイル済みシェーダーを pShaderBytecode に渡し、すべてのシェーダー ステージで UAV をサポートしていないデバイスで次のいずれかの手順を使用する場合 (すべてのシェーダー ステージで UAV をサポートするために実装されていない既存のドライバーを含む)、 CreateGeometryShaderWithStreamOutput は失敗します。 ハードウェアでサポートされている UAV スロットのセットを超える UAV スロットをシェーダーが使用しようとすると、CreateGeometryShaderWithStreamOutput も失敗します。
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- すべてのアトミックと即時アトミック ( たとえば、atomic_and と imm_atomic_and)
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d11.h |
Library | D3D11.lib |