Geometry-Shader 对象
几何着色器对象处理整个基元。 使用以下语法声明 geometry-shader 对象。
[maxvertexcount (NumVerts) ] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject ) ;
参数
-
[maxvertexcount (NumVerts) ]
-
[in]要创建的最大顶点数的声明。
- [maxvertexcount () ] - 必需关键字 (keyword) ;方括号和括号是正确语法所需的字符。
- NumVerts - 表示顶点数的整数。
-
ShaderName
-
[in]包含 geometry-shader 函数的唯一名称的 ASCII 字符串。
-
PrimitiveType DataType 名称 [ NumElements ]
-
PrimitiveType - 基元类型,用于确定基元数据的顺序。
基元类型 说明 point 点列表 line 线条列表或线条带 三角形 三角形列表或三角形带 lineadj 带相邻的线条列表或带相邻的行带 triangleadj 带相邻的三角形列表或带相邻的三角形带 DataType - [in] 输入数据类型;可以是任何 HLSL 数据类型。
名称 - 参数名称;这是一个 ASCII 字符串。
NumElements - 输入的数组大小,取决于 PrimitiveType ,如下表所示。
基元类型 NumElements point [1]
一次只对一个点进行操作。line [2]
一条线需要两个顶点。三角形 [3]
三角形需要三个顶点。lineadj [4]
lineadj 有两端:因此,它需要四个顶点。triangleadj [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 和更高着色器模型 | 是 |