Cuando uso cada uno de ellos con los mismos parámetros, la única diferencia que noto es qué tan cerca está la "cámara" de los objetos. ¿Cuál es la diferencia aquí, y cuál es el preferido para un juego principalmente en 2D?OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
Respuesta
No estoy de acuerdo con LeffelMania, aunque su respuesta ya está aceptada, me gustaría explicar de nuevo qué es un tronco y cuáles son las diferencias entre las proyecciones ortográficas y de perspectiva.
Un tronco truncado es una pirámide sin el objeto 3D con forma superior (en el enlace definido por el espacio entre el plano zNear y zFar).
El tronco se utiliza para determinar lo que la cámara puede ver. Todo lo que está dentro o se cruza con la vista de la cámara, se debe representar el triturado, el resto se puede ignorar.
Dado que un tronco de cono es una forma difícil de realizar comprobaciones de intersección, a menudo se construye una transformada de matriz para que la vista trunco se convierta en un cubo. Esta transformación matricial también se aplica a todos los objetos de escena, de modo que ahora podemos hacer una simple comprobación de "¿se cruza con un cubo?". Esto se llama canonical view frustum (see more info here)
Ahora acerca de la perspectiva frente a la proyección ortográfica. En la imagen, puede ver la cámara o el centro de proyección (COP). En una proyección en perspectiva, el COP está cerca del plano cercano. Los rayos de todas las posiciones en el plano lejano apuntan al COP. Donde estos rayos se cruzan con el plano cercano (también conocido como ventana gráfica), un píxel se colorea de acuerdo con el color de la cosa más cercana al plano cercano al que golpeó el rayo. Una proyección en perspectiva conduce a (múltiples) puntos de fuga y los objetos más alejados de la cámara son más pequeños, también las líneas paralelas en el mundo no son necesariamente paralelas en la imagen.
En una proyección ortográfica, el COP está infinitamente lejos, por lo que los rayos son casi paralelos entre sí. No hay un punto de fuga, los objetos más distantes no se dibujan más pequeños y las líneas paralelas en el mundo son paralelas en la imagen.
Al parecer, "en general hablando" y "generalización general" no calificaron mi respuesta lo suficientemente bien. Estamos completamente de acuerdo, acabas de utilizar muchas más palabras y una imagen ... – LeffelMania
Lo siento, pero "se usa para escenas en 3D para acomodar una proyección de vista en perspectiva" es tan vaga que tuve que completar más detalles. "representa la distancia de cada objeto ... (y) el ángulo de visión" es una afirmación extraña, ya que la vista triturada en sí misma no tiene ningún conocimiento de esto en absoluto y no se usa para ningún cálculo de distancia o ángulo. Toda la vista que es el frustum, es una forma de eliminar una escena. –
En general, un Frustum se utiliza para escenas 3D para acomodar una proyección de vista en perspectiva. Cuenta para la distancia de cada objeto de la cámara, así como el ángulo de visión para determinar el tamaño y la posición de un objeto en la pantalla. Una proyección ortográfica simplemente toma cada objeto y dibuja una línea recta desde el objeto a un píxel en la pantalla, por lo que es simplemente una escena plana. Esa es una generalización general y hay mucho que decir sobre el tema, pero para un juego en 2D querrás usar una proyección ortográfica.
- 1. Diferencia entre OpenGL ES 2.0 y OpenGL 4
- 2. ¿Cuál es la diferencia entre {0} y ""?
- 3. Cuál es la diferencia entre = y: =
- 4. ¿Cuál es la diferencia entre .ToString (+) y ""
- 5. Cuál es la diferencia entre $ (...) y `...`
- 6. ¿cuál es la diferencia entre:.! y: r !?
- 7. ¿Cuál es la diferencia entre ".equals" y "=="?
- 8. ¿Cuál es la diferencia entre dict() y {}?
- 9. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 10. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 11. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 12. ¿Cuál es la diferencia entre + = y = +?
- 13. ¿Cuál es la diferencia entre " " y ""?
- 14. Cuál es la diferencia entre $ y jQuery
- 15. Diferencia en iOS OpenGL ES y Android OpenGL ES
- 16. Diferencia entre glkView: drawInRect: y glkViewControllerUpdate :? OpenGL ES 2 - iOS
- 17. Cuál es la diferencia entre la función() {}() y la función() {}()
- 18. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 19. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 20. ¿Cuál es la diferencia entre codificar/decodificar?
- 21. ¿Cuál es la diferencia entre estas funciones?
- 22. ¿Cuál es la diferencia entre el
- 23. ¿Cuál es la diferencia entre esos dos?
- 24. ¿Cuál es la diferencia entre window.innerWidth window.outerWidth?
- 25. ¿Cuál es la diferencia entre applicationDidReceiveMemoryWarning, didReceiveMemoryWarning?
- 26. ¿Cuál es la diferencia entre Response.Write() andResponse.Output.Write()?
- 27. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 28. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 29. ¿Cuál es la diferencia entre el colado y la coerción?
- 30. ¿cuál es la diferencia entre el complemento y la biblioteca?
http://stackoverflow.com/questions/2571402/explain-the-usage-of-glortho/36046924#36046924 –