Je suis en train de travailler sur un shader gestionnaire de l'architecture et j'ai plusieurs questions pour d'autres personnes. Mon choix s'opposer deux conceptions qui sont:
1. Par matériau programme de shaders
=> Créer un shader programme de par les matériaux utilisés dans le programme.Les inconvénients possibles:
- Considérant chaque objet peut avoir son propre matériel, il implique beaucoup de glUseProgram appels.
- Implique la création d'une multitude de shaderprogram objets.
- Architecture plus complexe que la #2.
Pour:
- Shader code peut être généré spécifiquement pour chaque "options" utilisé dans le matériau.
- Si je ne me trompe pas, les uniformes doivent être définis qu'une seule fois (lors de la shaderprogram est créé).
2. Mondial shader programmes
=> Créer un shader programme par shader fonctionnalité (foudre, la réflexion, la parallaxe de la cartographie...) et l'utilisation des variables de configuration d'activer ou de jeter des options en fonction du matériau à rendre.Les inconvénients possibles:
- Les uniformes doivent être changés plusieurs fois par image.
Pour:
- Bas shader programmes de comte.
- Moins SP swich (glUseProgram).
Vous remarquerez peut-être que ma tendance actuelle est #1, mais je voulais savoir votre opinion à ce sujet.
- N'initiale des uniformes réglage de l'offset de la glUseProgram appel, les frais généraux (je ne suis pas particulièrement fou de vitesse) ?
- Dans le cas n ° 1, pour la mémoire ou de la performance de la contrepartie, dois-je appeler glLinkProgram qu'une seule fois lorsque je crée du PS, ou je doit dissocier/lien chaque fois que j'appelle glUseProgram?
- Sont t-il de meilleures solutions ?
Merci!