Неизвестные квалификаторы шейдера управления тесселяцией GLSL

#glsl #shader #qualifiers #tessellation

#glsl #шейдер #квалификаторы #тесселяция

Вопрос:

когда я загружаю свой шейдер управления тесселяцией, он выводится:

 0(7) : error C3008: unknown layout specifier 'vertices'
0(15) : error C7565: assignment to varying in gl_TessLevelOuterIn
0(16) : error C7565: assignment to varying in gl_TessLevelOuterIn
 

мой шейдер выглядит так

 #version 400

layout(vertices = 2) out;

void main( )
{
  gl_out[ gl_InvocationID ].gl_Position = gl_in[ gl_InvocationID ].gl_Position;

  gl_TessLevelOuter[0] = float( 1 );
  gl_TessLevelOuter[1] = float( 5 );
}
 

что я здесь делаю не так?
квалификатор «вершины» должен быть виден с #version 400?

в спецификациях говорится:

Квалификаторы компоновки

макет (layout-qualifiers) в / из / единообразный

Квалификаторы макета вывода

Для шейдеров управления тесселяцией: вершины = целое число-константа

также мой шейдер оценки тесселяции говорит:

 0(5) : error C3008: unknown layout specifier 'equal_spacing'
0(5) : error C3008: unknown layout specifier 'isolines'
 

я что-то упускаю?

с уважением, Питер

Комментарии:

1. Судя по сообщениям об ошибках, похоже, что вы пытаетесь скомпилировать это как шейдер оценки тесселяции, а не шейдер управления тесселяцией. Это два отдельных этапа.

2. спасибо, мой конструктор перепутал имена файлов моих шейдеров.