Le mieux est de commencer par un petit rappel de la fonction en question :
Cette fonction est utilisée dans le cas de superposition d'objet lors par exemple de techniques "multipasse" pour éviter le scintillement entre une même face dessinée plusieurs fois en ajoutant un offset au niveau du z buffer à l'une ou l'autre des faces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void glPolygonOffset( GLfloat factor, GLfloat units );
J'ai bien compris son intérêt, cependant j'ai mal compris son fonctionnement si quelqu'un peu m'expliquer exactement le calcul qui est fait sur la face concernée.
De ce que j'ai compris dans l'aide fournie en ligne.
Si on a notre surface dans le z-buffer à la postion z lorsqu'on utile la fonction glPolygonOffset on calcule alors une nouvelle valeur de la profondeur z' par l'opération :
z' = z + offset
avec : offset = factor *DZ + r * units (données dans l'aide de la fonction).
Déjà est ce que l'opération effectuée est bien celle-ci, où aurais-je mal compris.
Et que signifie les DZ et r.
Si j'ai bien compris le DZ dépendrait de la position à l'écran de l'objet et r correspondrait à un coefficient fixe (d'ailleurs comment est-il choisit ? en fonction de notre matrice de projection ? avec le Znear, Zfar ?)
Je galère dans mon application pour fixer justement les valeurs de factor et units que je fixe pour l'instant au pif, mais bon j'ai pas trop l'aléatoire même si ca marche. Si quelqu'un peut m'éclairer.
Merci.
Partager