Geometry-Shader 物件

幾何著色器物件會處理整個基本類型。 使用下列語法來宣告 geometry-shader 物件。

[maxvertexcount (NumVerts) ] void ShaderName ( PrimitiveType DataType Name [ NumElements ]inout StreamOutputObject ) ;

參數

[maxvertexcount (NumVerts) ]

[in]要建立之頂點數目上限的宣告。

  • [maxvertexcount () ] - required 關鍵字;括弧和括弧是正確語法的必要字元。
  • NumVerts - 代表頂點數目的整數。

ShaderName

[in]ASCII 字串,其中包含 geometry-shader 函式的唯一名稱。

PrimitiveType DataType 名稱 [ NumElements ]

PrimitiveType - 基本 類型,決定基本資料的順序。

基本類型 Description
點清單
line 線條清單或線條帶狀
三角形 三角形清單或三角形帶狀
lineadj 具有相鄰或相鄰線帶的線條清單
三角形adj 具有相鄰或相鄰三角形帶狀的三角形清單

DataType - [in] 輸入資料類型;可以是任何 HLSL 資料類型

名稱 - 引數名稱;這是 ASCII 字串。

NumElements - 輸入的陣列大小,視 PrimitiveType 而定,如下表所示。

基本類型 NumElements
 [1]
您一次只能操作一個點。
line [2]
線條需要兩個頂點。
三角形 [3]
三角形需要三個頂點。
lineadj [4]
lineadj 有兩個結尾;因此,它需要四個頂點。
三角形adj [6]
三角形adj 會框線三個以上的三角形;因此,它需要六個頂點。

StreamOutputObject

資料流程輸出物件的宣告。

傳回值

備註

下圖顯示幾何著色器物件的各種基本類型。

幾何著色器物件的各種基本類型圖例

下圖顯示幾何著色器調用。

幾何著色器調用的圖例

範例

此範例來自 Direct3D 10 著色器模型 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