次の方法で共有


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 も失敗します。

Windows Phone 8: この API はサポートされています。

要件

要件
対象プラットフォーム Windows
ヘッダー d3d11.h
Library D3D11.lib

こちらもご覧ください

ID3D11Device