Bonjour,
Je n'ai jamais développé de shaders, ma question paraitra peut etre evidente a certains :
Est il possible d'appliquer plusieurs pixel shaders en une seule passe de rendu ?
Je développe un programme modulaire, chaque module contient une fonction "render". La fonction chargée de dessiner parcourt le tableau des modules et appelle leur fonction "render" avant de swapper les buffers. C'est a dire que la fonction "render" de chaque module est appelée dans une seule et meme passe de rendu; or il se peut que certains modules aient a utiliser leur propre pixel shader, differents de celui des autres modules. Enfin, les modules n'ont aucune connaissance de l'existence des autres modules. Peut on imaginer un code dans le style :
En fait, ma question pourrait etre : peut on changer le shader a executer n'importe quand ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void Module::render () { loadMonShader (); mesAppelsOpenGL(); // style glBegin(...), glEnd() } avec comme fonction de rendu : void display () { for (unsigned int i=0 ; i < nbModule ; ++i) moduleArray[i].render (); glFlush (); swapBuffers (); }
Merci pour votre attention.
Partager