ジオメトリ シェーダー オブジェクトは、プリミティブ全体を処理します。 ジオメトリ シェーダー オブジェクトを宣言するには、次の構文を使用します。
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
パラメーター
-
[maxvertexcount(NumVerts)]
-
[in]作成する頂点の最大数の宣言。
- [maxvertexcount()] - 必須キーワード;角かっことかっこは、正しい構文に必要な文字です。
- NumVerts - 頂点の数を表す整数。
-
ShaderName
-
[in]geometry-shader 関数の一意の名前を含む ASCII 文字列。
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType - プリミティブ 型。プリミティブ データの順序を決定します。
プリミティブ型 形容 ポイント ポイント リスト 行 ライン リストまたはライン ストリップ 三角形の を する 三角形リストまたは三角形ストリップ lineadj を する 隣接性を持つ行リストまたは隣接する線ストリップ triangleadj 隣接性を持つ三角形リストまたは隣接性を持つ三角形のストリップ DataType - [in] 入力データ型。は、HLSL データ型 できます。
名 - 引数名;これは ASCII 文字列です。
NumElements - 次の表に示すように、PrimitiveType に依存する入力の配列サイズ。
プリミティブ型 NumElements ポイント [1]
一度に操作できるポイントは 1 つだけです。行 [2]
線には 2 つの頂点が必要です。三角形の を する [3]
三角形には 3 つの頂点が必要です。lineadj を する [4]
lineadj には 2 つの端があります。したがって、4 つの頂点が必要です。triangleadj [6]
三角形は、さらに 3 つの三角形の境界線。したがって、6 つの頂点が必要です。 -
StreamOutputObject
戻り値
何一つ
備考
次の図は、ジオメトリ シェーダー オブジェクトのさまざまなプリミティブ型を示しています。
ジオメトリ シェーダー オブジェクト図
次の図は、ジオメトリ シェーダーの呼び出しを示しています。
ジオメトリ シェーダー呼び出し図
例
この例は、Direct3D 10 Shader Model 4.0 Workshopの演習 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 以降のシェーダー モデル | はい |