El rango de los valores escritos en el búfer de profundidad es lo que quiera que sean. Por lo general, caen en el rango de 0 a 1. El valor real que se escribe en el búfer de profundidad se calcula durante la transformación de la ventana gráfica, en función del valor Z del vértice en el espacio NDC (después de la perspectiva dividir por w en el espacio del clip).
El valor de profundidad de NDC (Z, después de que la perspectiva se divida por W) se escala por la porción de profundidad de la transformación de la vista (que lleva sus coordenadas X e Y a un espacio de coordenadas que asociaría con píxeles en la ventana), y luego se escala por (2^n-1)
- que debe interpretarse como "dos a la potencia de n
" - n
es la precisión de bits del búfer de profundidad. El valor resultante se escribe en el búfer de profundidad.
OpenGL divide la definición de la matriz de transformación de la ventana gráfica en llamadas glViewport y glDepthRange . glDepthRange es lo que controla el factor de escala responsable de determinar el rango de profundidad sobre el que está preguntando. Puede llamar a glGetFloatv con el GL_DEPTH_RANGE
selector para recuperar el rango actual. Esto le permitirá hacer uso del rango sin suponer que es 0 a 1 (aunque el 99.9% del tiempo, en la práctica, nadie lo cambia).
Lectura adicional, si desea obtener información sobre cómo reconstruir las matemáticas para seguir el valor Z desde el espacio del ojo hasta el búfer de profundidad.