LIBGDX: ¿Qué es un "viewport"?


Este post está relacionado con un post anterior de querer aprender cómo renderizar correctamente entre LIBGDX y Box2D. Tuve que entender viewport mucho antes de poder proceder.
Después de muchas lecturas de código / post, sentí que el significado de" viewport "era"la apertura rectangular de una lente de la cámara que ve el mundo del juego de LIBGDX, donde puedo moverlo sobre el mundo para ver lo que quiero". Pero, después de leer más, parecía estar lejos del significado real.
He leído el wiki de LIBGDX, y lea en la documentación de OpenGL, que parece explicar viewport como dos cosas diferentes.

[0]} Wiki de LIBGDX:

"El viewport es una región de visualización rectangular de la pantalla donde se proyecta la escena 3D. No es más que mapear los objetos de 3 dimensiones al plano de 2 dimensiones."

OpenGL:

"el viewport indica la forma del área de pantalla disponible en la que se asigna la escena."

Stackoverflow:

"...tiene varias definiciones en diferentes contextos..." :'(

He intentado leer decenas de mensajes en el foro y tutoriales. Pero, por desgracia, casi todo el mundo salta a la derecha en él como si "viewport" es un concepto tan primitivo que todo el mundo entiende y sabe.
Sé que recibiré mucho calor por esta pregunta absolutamente básica. Por favor, no llames, te lo estoy pidiendo porque en realidad no lo sé y realmente necesito ayuda.

De todos modos, en la pregunta real.

¿Qué es "viewport" en el contexto LIBGDX?

Author: hippietrail, 2014-05-06

1 answers

Eso depende de la versión de LibGDX que esté utilizando. Con LibGDX 1.0.0 el Viewport se introdujo la clase y probablemente eso es lo que significan los últimos tutoriales y artículos, cuando hablan de "viewports".

Esta clase maneja dos cosas:

  • El viewport de una cámara
  • La ventana OpenGL

La vista de una cámara define cuánto quieres ver de tu mundo de juego. Si usted tiene un enorme TiledMap del tamaño 10000px X 10000px, entonces usted probablemente sólo quiero mostrar una pequeña área de ese mapa a la vez. Si define la vista de su cámara como 800px X 480px, verá una parte de su mapa que tiene exactamente esta dimensión (al menos en el caso de un OrthographicCamera). Es como una ventana a través de la cual miras a través de tu mundo y defines su tamaño a través de la ventana.

La ventana OpenGL define el área a la que se debe asignar la vista de la cámara. De forma predeterminada, esa ventana es el 100% del tamaño de su ventana en sistemas operativos de escritorio. Pero eso también podría ser diferente. Un FitViewport con LibGDX 1.0.0 puede escalar esa vista para que mantenga la relación de aspecto de una "vista virtual" que defina (que en realidad es la vista de la cámara, que está siendo administrada por la clase Viewport). Eso significa que en caso de que la relación de aspecto de la ventana no coincida con la relación de aspecto Viewport (virtual), la ventana de OpenGL se establecerá en un tamaño más pequeño y aparecerán barras negras. Así que usted puede pensar en ella como otra capa entre la ventana real en el escritorio, y la cámara. Esta capa toma la salida de la cámara y la escala al tamaño definido dentro de la ventana del escritorio.

 25
Author: noone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-10 06:46:12