Как вообще использовать шейдерную форму? - PullRequest
0 голосов
/ 11 июля 2009

Шейдеры могут иметь множество различных унифицированных имен + атрибутов. Как я могу создать систему, которая работает в общем случае, чтобы мне не приходилось заранее знать имя каждой формы шейдера и жестко кодировать ее, чтобы получить ее местоположение. Я использую OpenGL.

Ответы [ 2 ]

2 голосов
/ 11 июля 2009

К сожалению, в какой-то момент вам нужно будет знать, что такое унифицированные имена в шейдере и на что они ссылаются ... просто нет пути к этому.

Большинство графических / игровых движков работают по соглашению - определенные униформы устанавливаются движком, и шейдеры используют их по мере необходимости. Некоторые добавят конфигурацию, поэтому каждый шейдер может указать, какую униформу он требует, но обычно имена по-прежнему выполняются по соглашению.

1 голос
/ 11 июля 2009

Используйте соглашение об именах или проанализируйте строку шейдера самостоятельно, чтобы получить тип, символ и необязательный спецификатор хранилища. Первый вариант возлагает ответственность на программиста шейдеров, а второй - на программиста приложений. Такой код можно сделать намного элегантнее и эффективнее, используя расширение GL _ ARB _iform _ buffer _ object , которое было повышено до ядра в OpenGL 3.1

...