¿Qué tan rápido es glUseProgram()? ¿Hay algo mejor (más rápido) ?:Comportamiento de uniformes después de glUseProgram() y velocidad
Aquí están mis pensamientos:
- Uso 1 programa de sombreado universal, pero con muchos ajustes de entrada y atributos (ajustes para cada clase de gráficos)
- utilizar más de 1 sombreado para cada clase de gráficos
¿En qué estado están uniformes después de cambiar el programa de sombreado? ¿Guardan valores (por ejemplo, valores de matrices)?
Éstos son lo que considero los beneficios de # 1 para ser:
- No usa glUseProgram()
Y los beneficios de # 2:
- n cambios en la matriz (por ejemplo, si la clase
Menu
y la claseScene3D
tienen diferentes matrices de proyección)
"Cuál de las dos opciones es mejor depende en gran medida de lo que hacen los sombreadores" - La tarea es simple - la representación con texturación, sin ningún efecto (solo algunos deben tener efectos de sombreado). –
Si algunos son muy simples y algunos tienen un efecto, entonces tendría un sombreador simple con texturas (suponiendo openg gl 2.xo superior) y uno por clase de efecto. Pero realmente es difícil juzgar sin saber más. Probablemente no importará mucho en el panorama general. A menos que tenga problemas de rendimiento y sepa que se debe a cambios de estado, simplemente haga lo que le resulte más conveniente. – haffax
Los uniformes se pueden compartir entre programas usando el Objeto Buffer Uniforme (consulte, por ejemplo, [Uniformes Compartidos] (http://arcsynthesis.org/gltut/Positioning/Tut07%20Shared%20Uniforms.html)) – stativ