这篇文章与以前的一篇文章有关,该文章想学习如何在LIBGDX和Box2D之间正确渲染。在继续之前,我必须非常了解视口。
经过大量的代码/文章阅读后,我觉得“视口”的意思是“摄像机镜头的矩形开口,可以观看LIBGDX的游戏世界,在这里我可以将其移动到这个世界上以查看我想要的东西”。但是,经过更多的阅读,我似乎与实际含义相去甚远。
我已经阅读了LIBGDX Wiki,并阅读了OpenGL文档,该文档似乎将视口解释为两种不同的事物。
LIBGDX Wiki:
“视口是投影3D场景的屏幕的矩形查看区域。无非就是将3D对象映射到2D平面。”
OpenGL:
“视口表示场景映射到的可用屏幕区域的形状。”
堆栈溢出:
“ ...在不同的上下文中有多个定义...”:'(
我尝试阅读数十篇论坛帖子和教程。但是,不幸的是,几乎每个人都会跳进去,好像“视口”是每个人都能理解和了解的原始概念一样。
我知道这个完全基本的问题会给我带来很多帮助。我问,请不要发火,因为我实际上不知道并且实际上需要帮助。
无论如何,进入实际问题。
LIBGDX上下文中的“视口”是什么?
这取决于您使用的LibGDX的版本。在LibGDX 1.0.0Viewport
中引入了该类,这可能是最新的教程和文章在谈论“视口”时的意思。
此类管理两件事:
摄像机的视口定义了您想要看到的游戏世界的数量。如果您拥有TiledMap
10000px X 10000px的巨大尺寸,那么您可能只想一次显示该地图的一小部分。如果您将相机视口定义为800px X 480px,那么您将看到地图的一部分恰好具有此尺寸(至少在的情况下OrthographicCamera
)。就像一个窗口,您可以在其中浏览整个世界,并通过视口定义它的大小。
OpenGL视口定义了相机视图应映射到的区域。默认情况下,视口是桌面操作系统上窗口大小的100%。但这也可能有所不同。甲FitViewport
,使得它保持一个“虚拟视口”,其定义(这实际上是在相机的视口,这是正在被管理的宽高比与LibGDX 1.0.0可以扩展该视口中Viewport
类)。这意味着,如果窗口的纵横比与Viewport
(虚拟)纵横比不匹配,则OpenGL视口将设置为较小的尺寸,并且会出现黑条。因此,您可以将其视为桌面上实际窗口和相机之间的另一层。该层获取相机的输出,并将其缩放到桌面窗口中的定义大小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句