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 以降のシェーダー モデル はい

シェーダー モデル 4