这篇文章与之前希望了解如何在LIBGDX和Box2D之间正确呈现的帖子有关。在我继续之前,我必须了解视口 经过大量的代码/后期阅读,我觉得“视口”的意思是“镜头的矩形开口,可以看到LIBGDX的游戏世界,我可以在世界各地移动它来查看我想要的东西”。但是,经过更多的阅读,我似乎远远没有达到实际意义 我已经阅读了LIBGDX wiki,并阅读了OpenGL文档,它似乎将视口解释为两个不同的东西。
LIBGDX Wiki:
“视口是投影3D场景的屏幕的矩形视图区域。它只不过是将三维对象映射到二维平面。”
OpenGL:
“视口指示场景映射到的可用屏幕区域的形状。”
Stackoverflow:
“......它在不同的背景下有几个定义......”:(
我已经尝试过阅读数十篇论坛帖子和教程。但是,不幸的是,几乎每个人都跳进去,好像“视口”是一个每个人都理解和知道的原始概念。
我知道,对于这个完全基本的问题,我会得到很多热量。请不要火焰,我问,因为我实际上不知道,实际上需要帮助。
无论如何,进入实际问题。
LIBGDX上下文中的“viewport”是什么?
答案 0 :(得分:26)
这取决于您使用的LibGDX版本。使用LibGDX 1.0.0引入了Viewport
类,当他们谈论“视口”时,这可能是最新的教程和文章的意思。
这门课管理两件事:
摄像机的视口定义了您希望看到的游戏世界的数量。如果你有一个巨大的TiledMap
大小10000px X 10000px,那么你可能只想一次显示该地图的一小块区域。如果您将摄像机视口定义为800px X 480px,那么您将看到地图的一部分具有该维度(至少在OrthographicCamera
的情况下)。它就像一个窗口,通过它可以浏览您的世界,并通过视口定义它的大小。
OpenGL视口定义摄像机视图应映射到的区域。默认情况下,视口是桌面操作系统上窗口大小的100%。但这也可能有所不同。带有LibGDX 1.0.0的FitViewport
可以缩放该视口,以便保持您定义的“虚拟视口”的宽高比(实际上是摄像机的视口,由Viewport
管理类)。这意味着如果窗口的宽高比与Viewport
(虚拟)宽高比不匹配,OpenGL视口将设置为较小的尺寸,并且会出现黑条。因此,您可以将其视为桌面上实际窗口与相机之间的另一层。此图层获取相机的输出并将其缩放到桌面窗口中定义的大小。