XNA:什么是视口?

4

在2D方面,我不理解视口是什么及其用途。我正在尝试构建一个横向卷轴游戏,我认为我需要视口来实现地图滚动部分。

2个回答

9
考虑一台显示场景的电视,视口简单地说就是相机捕捉到的场景区域。
另一种思考视口的方式是,有些摄影师会用拇指和食指“框定”一个场景,或者举起一个空心画框,通过这个画框穿过的光线就是视口。
为了提供一个视觉示例,可以看下面的gif图,绿色矩形即为视口: enter image description here

如果我绘制的物体超出了屏幕的右侧,假设我将默认视口向右移动,那么我能看到屏幕外的物体吗? 在上面的图片中,如果绿色矩形外有物体,我能移动绿色矩形以显示那些物体吗?(即移动视口) - Bob
是的,虽然我认为你只需要移动相机,但只有在更改视图截锥体以获得更宽的视野时,视口才需要更改。截锥体是图片中的黑色金字塔。 - Russ Clarke
啊哦,我正在努力想一个好的表述方式……视口就像你的眼睛,当你直视前方时,你只能看到左右或上下有限的范围,对吧?这是因为你的眼睛受到虹膜的限制,只能让一定量的光线进入。视口是计算机对此的逻辑表示——它只显示相机所拍摄的像素。就像如果你的眼睛的焦点不正确,你会近视或远视一样,视口确保3D图像聚焦而不失真。 - Russ Clarke
这就是视口的美妙之处,它会自动计算出你能看到什么。 - Russ Clarke
非常感谢你,Russ!你真的花时间帮助了我!我有这个问题已经有一段时间了,但始终无法解决它。再次感谢! - Bob
显示剩余21条评论

2
视口包含有关显示游戏的实际窗口的信息。如果您正在使用2D,您将处理的主要内容将是宽度、高度、纵横比(可节省自行计算的时间),以及如果您计划部署到360,则是TitleSafeArea(在所有电视上绘制的矩形安全区域,旧电视会剪辑一些边缘的5-10%)。
您可能不会在运行时更改窗口的宽度和高度,因此如果您存储相机位置的X和Y,您可以存储屏幕的宽度和高度,并且除了在TitleSafeArea中放置HUD元素之外,永远不必再次查看视口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接