>> Technologie Électronique >  >> Radio par satellite >> XM

OpenGL glDepthRange et plan de coupure lointain : Configuration mapping profondeur correcte

Mapping plage profondeur

La commande glDepthRange(near, far) définit le mapping des coordonnées périphériques normalisées (NDC) z ∈ [-1, 1] vers valeurs profondeur espace fenêtre.

Usage standard

glDepthRange(0.0, 1.0); // Défaut : near=0, far=1

glZMax 999 n'est pas fonction OpenGL standard. Cela peut faire référence à :

  • Définition distance plan de coupure lointain dans matrice projection (ex: glFrustum, gluPerspective, glm::perspective), où far = 999 unités.
  • Convention nommage wrapper moteur custom.

Plan lointain matrice projection

Dans gluPerspective(fov, aspect, near, far), far définit distance maximale vue. Objets au-delà de far sont coupés.

  • far trop grand (ex: 999999) → z-fighting (perte précision profondeur) due distribution profondeur non-linéaire (précision concentrée près near).
  • Bonne pratique : Définir near aussi grand que possible, far aussi petit que possible pour scène.

Précision tampon profondeur

Tampon profondeur 24-bit : précision ≈ near * far / (far - near) à distance. Reverse-z (profondeur floating-point, glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE) + glDepthFunc(GL_GREATER)) améliore dramatiquement précision pour grandes plages.

XM