Je bricole avec un projet open source qui utilise OpenGL pour le rendu en 3D. Dans la construction des matériaux que je vois le code comme ceci:OpenGL - GL_FRONT par rapport à GL_FRONT_AND_BACK
// set ambient material reflectance
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mAmbient);
Dans d'autres exemples, il est utilisé:
glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient);
Donc ma question est, quelle est la différence ici? Dans quelles circonstances cela serait-il différent et, si mon volume est entouré de toutes les normales pointant vers l'extérieur, y a-t-il une différence de performance?
Ok est logique. Sur le point de performance, est-ce que l'abattage en arrière utilise moins de ressources/améliore la performance? Et si le "culling" est déjà activé (je pense que c'est le cas, mais que je dois trouver ce bit du code), est-ce que ça change si je spécifie "GL_FRONT_AND_BACK" ou juste "GL_FRONT"? –
Du point de vue du rendu final, non - si les faces arrières sont éliminées (et donc ne dessinent pas), peu importe le matériau qui leur est appliqué. Il peut cependant être plus rapide de n'appeler que GL_FRONT, car OGL n'aurait alors qu'à changer la partie de son état liée aux faces avant, et non les faces arrière. – Thanatos
Du point de vue des performances, vous devez ignorer complètement glMaterialfv. Il provient de l'ancien pipeline de fonctions fixes et est maintenant obsolète. Regardez à l'aide de shaders à la place. –