Pergunta

Shaders pode ter lotes de diferentes nomes uniformes + atributos. Como posso fazer um sistema que funciona no caso geral para que eu não tenho de saber o nome de cada uniforme shader de antemão e codificá-lo para código para obter a sua localização. Eu uso OpenGL.

Foi útil?

Solução

Infelizmente, em algum momento, você precisa saber o que os nomes uniformes no shader são, e que eles se referem ... simplesmente não há maneira de contornar isso.

A maioria dos gráficos / motores de jogo funciona por convenção - certos uniformes são definidas pelo motor, e shaders usá-los quando necessário. Alguns vão adicionar configuração, de modo que cada shader pode especificar quais uniformes que exige, mas normalmente, os nomes ainda são feitas por convenção.

Outras dicas

Use uma convenção de nomenclatura, ou analisar a cadeia de shader-se para obter o tipo, símbolo e especificador de armazenamento opcional. A primeira opção coloca uma responsabilidade sobre o programador shader, enquanto o segundo puts solução a carga sobre o programador da aplicação. Esse código pode ser feito muito mais elegante e eficiente usando a extensão GL _ ARB _ _ uniforme tampão _ objeto, que foi promovido para o núcleo em OpenGL 3.1

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top