Quelle est la différence entre l'utilisation de la suppression de face arrière et un tampon de profondeur dans OpenGL?Buffer de profondeur Opengl et Culling
Répondre
L'élimination de la face arrière est lorsque OpenGL détermine quelles faces sont éloignées de l'observateur et sont donc invisibles. Pensez à un cube. Peu importe comment vous faites pivoter le cube, 3 faces seront toujours invisibles. Déterminez quels visages sont ceux-ci, supprimez-les de la liste des polygones à dessiner et vous venez de réduire de moitié votre liste de dessin.
La mise en tampon de profondeur est assez simple. Pour chaque pixel de chaque polygone dessiné, comparez sa valeur z au tampon z. si elle est inférieure à la valeur du tampon z, définissez la valeur du tampon z comme nouvelle valeur du tampon z. Sinon, jetez le pixel. La mise en mémoire tampon de profondeur donne de très bons résultats mais peut être assez lente car chaque pixel nécessite une recherche de valeur.
En réalité, il n'y a rien de semblable entre ces deux méthodes et elles sont souvent toutes les deux utilisées. Étant donné un cube, vous pouvez d'abord découper la moitié des polygones en utilisant la sélection, puis les dessiner en utilisant la mise en mémoire tampon z. Culling peut réduire les polygones rendus, mais ce n'est pas un algorithme de tri. C'est ce que Z tampon est.
Un triangle donné a deux côtés, la face avant et la face arrière. Le côté que vous regardez est déterminé par l'ordre dans lequel les points apparaissent dans la liste des sommets (aussi appelée l'enroulement). Typiquement, les listes de triangles ont un enroulement alterné de sorte que vous pouvez réutiliser les deux points précédents, mais la face d'un triangle donné dans la bande ne change pas. L'élimination du visage arrière est l'étape d'optimisation où les triangles de la scène qui sont orientés à l'opposé de la vue sont supprimés de la liste des triangles à dessiner.
Un tampon de profondeur (z-buffer) est utilisé pour accrocher à la chose la plus proche (la profondeur est relative à la vue) qui a déjà été rendue. Si la chose qui vient ensuite dans la liste des tirages est derrière quelque chose que j'ai déjà dessiné (c'est-à-dire qu'elle a une profondeur qui la place plus loin), je peux sauter le dessin, car il est obstrué. Si la nouvelle chose à dessiner est plus proche, je la dessine et je mets à jour le buffer de profondeur avec la nouvelle valeur plus proche.
L'option d'effacement de la face arrière OpenGL ne supprime-t-elle pas les côtés arrière des faces, c'est-à-dire les côtés intérieurs des faces d'un cube? (Je suis assez sûr que la réponse de Mikeb a raison). – mk12