C# 新华社:什么是视口?

C# 新华社:什么是视口?,c#,xna,viewport,C#,Xna,Viewport,就2D而言,我不理解视口是什么以及它的用途。 我正在尝试构建一个侧边滚动器,并且相信我需要用于地图滚动部分的视口。考虑一个显示场景的电视,视口只是相机捕捉到的场景区域 另一种思考方式是一些摄影师举起大拇指和食指来“勾勒”一个场景,或者举起一个中空的画框,通过该画框的光就是视口 对于一个可视化的例子,考虑这个GIF,绿色矩形是视口: 视口包含有关显示游戏的实际当前窗口的信息。如果你是在2D中工作,你将要处理的主要问题是宽度、高度、纵横比(节省自己计算),如果你计划部署到360,则标题安全区域(在所

就2D而言,我不理解视口是什么以及它的用途。
我正在尝试构建一个侧边滚动器,并且相信我需要用于地图滚动部分的视口。

考虑一个显示场景的电视,视口只是相机捕捉到的场景区域

另一种思考方式是一些摄影师举起大拇指和食指来“勾勒”一个场景,或者举起一个中空的画框,通过该画框的光就是视口

对于一个可视化的例子,考虑这个GIF,绿色矩形是视口:


视口包含有关显示游戏的实际当前窗口的信息。如果你是在2D中工作,你将要处理的主要问题是宽度、高度、纵横比(节省自己计算),如果你计划部署到360,则标题安全区域(在所有电视上可以安全绘制的矩形,较旧的电视将剪辑部分边缘的5-10%)


您可能不会在运行时更改窗口的宽度和高度,因此如果您为相机位置存储X和Y,您可以存储屏幕的宽度和高度,并且不必再查看视口,除非可能要将HUD元素放置在标题Safea中。

因此,假设我绘制的东西延伸到屏幕右侧。如果我将默认视口向右移动,我是否能够看到屏幕上的东西?在上图中,如果绿色矩形外有对象,我可以移动绿色矩形以显示这些对象吗?(移动视口)是的,没错,虽然我认为您实际上只需要移动摄影机,但只有在更改视锥时才需要更改视口,以获得更宽的视野。平截头体是图片中的黑色金字塔。好吧,我想我基本上理解了什么是视口,但我不知道它如何适合在屏幕上滚动瓷砖。使用视口有什么意义?这是一个好问题,有很多原因,但我现在可以列出2个,一个是它设置了焦距,如果视口太近或太远,你的场景会被扭曲,另一个是asLunin说,视口是一个已知的2d平面,可以用于定位精灵、HUD元素,在directX和3d硬件出现之前,视口作为将3d位置转换为2d像素的平面也很重要。