次の方法で共有


Geometry-Shader オブジェクト

ジオメトリ シェーダー オブジェクトは、プリミティブ全体を処理します。 ジオメトリ シェーダー オブジェクトを宣言するには、次の構文を使用します。

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

シェーダー モデル 4