LIBGDX:什么是"视口"?

cof*_*net 25 graphics terminology viewport box2d libgdx

这篇文章与想要学习如何在LIBGDX和Box2D之间正确呈现的早期帖子有关.在我继续之前,我必须了解视口.
经过大量的代码/后期阅读,我觉得"视口"的意思是"镜头的矩形开口,可以看到LIBGDX的游戏世界,我可以在世界各地移动它来查看我想要的东西".但是,经过更多的阅读,我似乎远远没有实际意义.
我已经阅读了LIBGDX wiki,并阅读了OpenGL文档,它似乎将视口解释为两个不同的东西.

LIBGDX维基:

"视口是投影3D场景的屏幕的矩形视图区域.它只不过是将三维对象映射到二维平面."

OpenGL的:

"视口指示场景映射到的可用屏幕区域的形状."

堆栈溢出:

"......它在不同的背景下有几个定义......":'(

我已经尝试过阅读数十篇论坛帖子和教程.但是,不幸的是,几乎每个人都跳进去,好像"视口"是一个每个人都理解和知道的原始概念.
我知道,对于这个完全基本的问题,我会得到很多热量.请不要火焰,我问,因为我实际上不知道,实际上需要帮助.

无论如何,进入实际问题.

LIBGDX上下文中的"viewport"是什么?

noo*_*one 27

这取决于您使用的LibGDX版本.使用LibGDX 1.0.0 Viewport引入了这个类,当他们谈论"视口"时,这可能是最新的教程和文章的意思.

这个课管理两件事:

  • 相机的视口
  • OpenGL视口

摄像机的视口定义了您希望看到的游戏世界的数量.如果你有一个庞大TiledMap的10000px X 10000px的大小,那么你可能只想一次显示该地图的一小块区域.如果您将摄影机视口定义为800px X 480px,那么您将看到地图的一部分具有该尺寸(至少在a的情况下OrthographicCamera).它就像一个窗口,通过它可以浏览您的世界,并通过视口定义它的大小.

OpenGL视口定义摄像机视图应映射到的区域.默认情况下,视口是桌面操作系统上窗口大小的100%.但这也可能有所不同.甲FitViewport,使得它保持该定义(这实际上是在相机的视口,这是正在被管理的"虚拟视口"的纵横比与LibGDX 1.0.0可以扩展该视口中Viewport类).这意味着如果窗口的宽高比与Viewport(虚拟)宽高比不匹配,OpenGL视口将设置为更小的尺寸,并且将出现黑条.因此,您可以将其视为桌面上实际窗口与相机之间的另一层.此图层获取相机的输出并将其缩放到桌面窗口中定义的大小.