Geometry-Shader オブジェクト
geometry-shader オブジェクトはプリミティブ全体を処理します。 geometry シェーダー オブジェクトを宣言するには、次の構文を使用します。
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
パラメーター
-
[maxvertexcount(NumVerts)]
-
[入力]作成する頂点の最大数の宣言。
- [maxvertexcount()] - 必須のキーワード (keyword)。角かっことかっこは、正しい構文に必要な文字です。
- NumVerts - 頂点の数を表す整数。
-
ShaderName
-
[入力]geometry-shader 関数の一意の名前を含む ASCII 文字列。
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType - プリミティブ 型。プリミティブ データの順序を決定します。
プリミティブ型 説明 point ポイント リスト 行 ライン リストまたはライン ストリップ triangle 三角形リストまたは三角形ストリップ lineadj 隣接または隣接を持つライン ストリップを含む行リスト triangleadj 隣接性を持つ三角形リストまたは隣接性を持つ三角形ストリップ DataType - [in] 入力データ型。には、任意 の HLSL データ型を指定できます。
Name - 引数名。これは ASCII 文字列です。
NumElements - 次の表に示すように、 PrimitiveType に依存する入力の配列サイズ。
プリミティブ型 NumElements point [1]
一度に 1 つのポイントのみを操作します。行 [2]
線には 2 つの頂点が必要です。triangle [3]
三角形には 3 つの頂点が必要です。lineadj [4]
lineadj には 2 つの端があります。したがって、4 つの頂点が必要です。triangleadj [6]
三角形は、さらに 3 つの三角形に罫線を付けます。したがって、6 つの頂点が必要です。 -
StreamOutputObject
-
ストリーム出力オブジェクトの宣言。
戻り値
なし
解説
次の図は、ジオメトリ シェーダー オブジェクトのさまざまなプリミティブ型を示しています。
次の図は、ジオメトリ シェーダーの呼び出しを示しています。
例
この例は、 Direct3D 10 シェーダー モデル 4.0 ワークショップの演習 1 です。
[maxvertexcount(3)]
void GSScene( triangleadj GSSceneIn input[6], inout TriangleStream<PSSceneIn> OutputStream )
{
PSSceneIn output = (PSSceneIn)0;
for( uint i=0; i<6; i+=2 )
{
output.Pos = input[i].Pos;
output.Norm = input[i].Norm;
output.Tex = input[i].Tex;
OutputStream.Append( output );
}
OutputStream.RestartStrip();
}
最小シェーダー モデル
このオブジェクトは、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 4 以降のシェーダー モデル | はい |