几何着色器对象处理整个基元。 使用以下语法声明几何着色器对象。
[maxvertexcount(NumVerts)] void ShaderName(PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject ;
参数
-
[maxvertexcount(NumVerts)]
-
[in]要创建的最大顶点数的声明。
- [maxvertexcount()] - 必需关键字;括号和括号是正确语法所必需的字符。
- NumVerts - 表示顶点数的整数。
-
ShaderName
-
[in]包含几何着色器函数的唯一名称的 ASCII 字符串。
-
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 研讨会练习 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 和更高的着色器模型 | 是的 |