2012-04-05 2 views
3

Я представил геометрический шейдер для своего приложения OpenGL. В моих шейдерах есть несколько «переменных» переменных, которые я передаю из вершинного шейдера в шейдер фрагмента. Теперь, представив геометрический шейдер, мне нужно вручную передать каждое переменное значение в геометрическом шейдере для каждой вершины. Есть ли способ избежать этого и делать вещи «автоматически»?Передача переменных переменных через геометрический шейдер

ответ

2

No.

Как только вы приведете геометрии затенение в трубопроводе, если вы хотите, чтобы передать переменные из вершинного шейдера в шейдер фрагмента вы должны передать их вручную, создавая входной переменной от вершины шейдер и выходную переменную в шейдер фрагмента. Я не знаю, какую версию GLSL вы используете, но вы можете проверить раздел 4.3.4 GLSL 3.30 spec.

2

Нет, потому что нет никакого разумного способа сделать это ни для чего, кроме шейдера геометрии noop, и если ваш геометрический шейдер ничего не делает для геометрии, почему он включен в первую очередь?

Как правило, геометрический шейдер принимает количество вершин в качестве входных данных и производит (другое) количество вершин в качестве вывода. Итак, какие входные вершины (es) должны быть сопоставлены, к какой выходной вершине (es) «автоматически»?

+0

Да, вы правы. В моем случае геометрический шейдер фактически ничего не делает для геометрии, кроме отбрасывания вершин, поэтому он имеет смысл. Но я понимаю, что применение геометрических шейдеров намного шире, поэтому я хочу, чтобы это было невозможно. Спасибо за объяснение. – SimpleMan

+0

Есть очень полезные геометрические шейдеры, которые не изменяют геометрию. геометрические шейдеры - единственное место, где все вершины примитива доступны для вычисления. Метод «Однопроходный каркас» использует эту информацию для добавления дополнительной информации без изменения геометрии. При использовании этого метода, это немного раздражает, чтобы пройти все другие значения. Однако мы должны, поэтому cest'la'vie. –

Смежные вопросы