共用方式為


Geometry-Shader 物件

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

[maxvertexcount(NumVerts)] void ShaderNamePrimitiveType DataType Name [ NumElements ], inout StreamOutputObject ] :

參數

[maxvertexcount(NumVerts)]

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

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

ShaderName

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

PrimitiveType DataType 名稱 [ NumElements ]

PrimitiveType - 基本類型,決定基本數據的順序。

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

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

名稱 - 自變數名稱;這是 ASCII 字串。

NumElements - 輸入的陣列大小,這取決於 PrimitiveType,如下表所示。

基本類型 NumElements
[1]
您一次只作一個點。
[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