Объект Geometry-Shader
Объект геометрического шейдера обрабатывает целые примитивы. Используйте следующий синтаксис для объявления объекта geometry-shader.
[maxvertexcount(NumVerts)] void ShaderName ( PrimitiveType DataType Name [ NumElements ], inout StreamOutputObject );
Параметры
-
[maxvertexcount(NumVerts)]
-
[in] Объявление максимального числа создаваемых вершин.
- [maxvertexcount()] — обязательный ключевое слово; квадратные скобки и круглые скобки являются обязательными символами для правильного синтаксиса.
- NumVerts — целочисленное число, представляющее число вершин.
-
Имя шейдера
-
[in] Строка ASCII, содержащая уникальное имя для функции геометрического шейдера.
-
PrimitiveType DataType Name [ NumElements ]
-
PrimitiveType — примитивный тип, который определяет порядок данных-примитивов.
Примитивный тип Описание Точки Список точек line Список строк или полоса линий треугольник Список треугольников или полоса треугольников lineadj Список строк с примыкаемостью или полоса линий с примыкаемостью triangleadj Список треугольников с примыкаемостью или полоска треугольника с примыкаемостью DataType — [in] Тип входных данных; может быть любым типом данных HLSL.
Name — имя аргумента; это строка ASCII.
NumElements — размер массива входных данных, который зависит от PrimitiveType , как показано в следующей таблице.
Примитивный тип NumElements Точки [1]
Вы работаете только на одной точке за раз.line [2]
Для линии требуется две вершины.треугольник [3]
Для треугольника требуется три вершины.lineadj [4]
Lineadj имеет два конца; следовательно, требуется четыре вершины.triangleadj [6]
Треугольникаддж граничит еще три треугольника; следовательно, требуется шесть вершин. -
StreamOutputObject
-
Объявление объекта stream-output.
Возвращаемое значение
Нет
Remarks
На следующей схеме показаны различные примитивные типы для объекта геометрического шейдера.
На следующей схеме показаны вызовы шейдера геометрии.
Примеры
Этот пример является примером из упражнения 1 из семинара по модели шейдера Direct3D 10 4.0.
[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 и более поздних версий шейдеров | да |