Question

Je ne suis pas tout à fait sûr que je peux faire ce que je veux, mais j'ai un tas d'objets étant rendu en OpenGL (en utilisant JOGL). Pour un groupe d'objets, je veux faire en sorte que certains objets de ce groupe sont rendus devant d'autres objets dans ce groupe. J'ai essayé effaçant le bit tampon de profondeur et rendre les objets « avant » dernier, et qui fonctionne, sauf qu'il bousille autre mise en mémoire tampon de profondeur à l'écran.

Qu'est-ce qu'il revient à dire que j'ai une liste d'objets étant rendu et je veux faire en sorte que certains objets dans cette liste sont rendus devant d'autres objets (ils sont tous à la même coordonnée Z bien). Est-il possible de le faire?

merci, Jeff

Était-ce utile?

La solution

Ceci est une technique très courante pour dessiner des objets transparents (objets qui ont des pièces avec des alpha! = 1).

L'approche la plus commune est d'abord construire un arbre d'objets à tirer que vous pouvez puis trier le long de la « profondeur » après avoir été passé à travers la projection * matrices de caméra. Fondamentalement, au lieu de simplement jeter aveuglément triangles au GPU, vous envoyez vos objets un par un comme vous les traiter dans le monde à un tampon temporaire. Ces objets ont une connaissance complète de chaque triangle et toutes les couleurs de vertex / vertex shaders / nom de texture + id etc. Ensuite, vous pouvez trier votre tampon (soit naïvement, objet par objet, ou une base genre épanouie sur des taches similaires à travers des objets).

L'astuce glDepthMask, si je me souviens bien, va quelque chose comme ceci:

glDepthMask(true);
drawOpaqueObjects();
glDepthMask(false);
drawTransparentObjects();

Pour obtenir les meilleurs résultats les objets transparents sont triés en arrière à l'avant, mais dans la plupart des applications (simples), cela ne fait rien.

edit: noter que pour la 2ème technique, alors que vous activez et désactivez tampon la profondeur, vous utilisez toujours TEST tampon de profondeur, des objets si transparents derrière vos objets normaux (un pointage de casque « dans » l'écran par exemple) a gagné » t laisser entraîner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top