Pregunta

Shaders pueden tener un montón de nombres diferentes uniformes + atributos. ¿Cómo puedo hacer un sistema que funciona en el caso general de modo que yo no tengo que saber el nombre de cada uno de sombreado uniforme de antemano y codificar a código para obtener su ubicación. Yo uso de OpenGL.

¿Fue útil?

Solución

Por desgracia, en algún momento, tendrá que saber cuáles son los nombres uniformes en el shader son, y lo que ellos llaman ... simplemente no hay forma de evitar eso.

La mayoría de los motores gráficos / juego obra de convenciones - uniformes determinado son fijados por el motor, y shaders los utilizan según sea necesario. Algunos añadir configuración, por lo que cada shader puede especificar lo que se requiere uniformes, pero por lo general, los nombres están siendo hecho por convención.

Otros consejos

Utilice una convención de nombres, o analizar la cadena de sombreado de sí mismo para obtener el tipo, el símbolo y el especificador de almacenamiento opcional. La primera opción pone la responsabilidad en el programador de sombreado, mientras que la última solución pone la carga en el programador de la aplicación. Este código se puede hacer mucho más elegante y eficiente mediante el uso de la extensión GL _ ARB _ uniforme _ tampón _ objeto, que fue ascendido a núcleo en OpenGL 3.1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top