2012-02-21 6 views
5

Al principio me preguntaba por qué NDC varía de -1 a 1, en lugar de 0 a 1. Pensé que quizás tener el origen en el centro es útil para algo.¿Por qué el sistema de coordenadas del dispositivo normalizado es para zurdos?

¿Pero por qué usa un sistema de coordenadas para zurdos?

¿Podría ser solo para que el valor Z sea más alto para objetos más alejados? Esa sería una buena razón para mí.

+0

No entiendo cómo un origen centrado significa que es "zurdo" ... –

+0

Nunca insinué eso. Vea aquí: http://www.songho.ca/opengl/gl_projectionmatrix.html Reformulado mi pregunta. –

+1

¿Por qué un sistema diestro sería mejor? – cmannett85

Respuesta

11

¿Pero por qué usa un sistema de coordenadas para zurdos?

Agreguemos "por defecto" a esa pregunta. Porque todo lo que se necesita para cambiarlo es glDepthRange(1.0f, 0.0f); y ahora eres diestro. Y sí, esa es la sintaxis GL perfectamente legal; nunca ha habido una restricción de que el rango cerca de z sea menor que el rango lejano z.

¿Por qué es zurdo por defecto? Tal vez a alguien del ARB le gustaba eso. Tal vez a alguien en el ARB le gustaba aumentar el rango de profundidad en lugar de disminuir, y la orientación de la esquina inferior izquierda lo hacía necesario. Tal vez porque el progenitor de OpenGL, IRIX GL, lo hizo de esta manera y el ARB no vio ninguna necesidad de cambiarlo.

La razón de esto es irrelevante; la destreza es puramente una conveniencia de notación. En algunos lugares, diestro tiene sentido. En otros, zurdo tiene sentido. Y dado que se trata de un cambio trivial, simplemente use lo que funcione para usted.

Sería consecuente con todo lo demás.

De acuerdo con ¿qué todo lo demás? ¿Todas las cosas de función fija que se han eliminado?

La transformación de la ventana gráfica es realizada por OpenGL internamente, donde nadie puede acceder. Ni siquiera proporciona una matriz; usted solo proporciona una vista y un rango de profundidad. Entonces, desde la perspectiva de alguien que usa GL de función fija, todo es realmente correcto.

La única vez que aparece la lateralidad es cuando trata directamente con los sombreadores de vértices, donde debe saber cuál es la dirección del espacio de clip. Y en ese caso, el cambio en la destreza es una función simple de la proyección en perspectiva que niega la Z. O, si le gustan las coordenadas para zurdos, la proyección en perspectiva no anula la Z. O nuevamente, simplemente invierta el glDepthRange y ahora eres diestro

7

¿Pero por qué está utilizando un sistema de coordenadas para zurdos?

De modo que aumenten las distancias desde el plano de proyección en el mapa de direcciones de la vista a los valores crecientes de la memoria intermedia de profundidad.

¿Podría ser justo para que el valor Z sea más alto para los objetos más lejanos? Esa sería una buena razón para mí.

Bueno, esa es exactamente la razón por la que es así.

0

Adivina el cambio en el uso de la mano es propiedad de cómo las tarjetas gráficas interpretan los valores de z.Mayor valor z -> mayor profundidad. El cambio implícito de destreza puede ser realizado por la matriz de proyección sin costos adicionales. Cambiarlo más tarde agregaría un paso de cálculo adicional.

Cuestiones relacionadas