我想知道门户游戏是以什么方式工作的。你可以站在一个入口和另一个入口之间,它是如此的迷人。
每次你射击一个传送门,也许关卡都会被复制进去?或者仅仅是摄影机/视锥/视口的效果?
我想用OpenGL开发它,有什么建议吗?
发布于 2012-11-01 04:57:15
这对他们来说是一场噩梦。通过“导演评论”来玩这个游戏,你会得到一些有趣的采访提到它。
这是基本的想法。当您查看蓝色门户时,您看到的不是关卡的副本,而只是从不同的角度呈现的相同内容。引擎从橙色门户“后面”的角度渲染通过门户看到的部分,对应于您在蓝色门户前面的位置。它需要特别小心,不要显示这个虚拟视点和橙色门户的背面之间的任何东西。视图平截体将调整为仅包含您可以通过蓝色门户看到的部分。
但这还不是全部,因为如果您可以通过一个门户查看另一个门户,会发生什么呢?你会得到一个“无限”的反馈效果。在实践中,效果实际上并不是无限的;它只是进行了足够的迭代(比如40次),直到图像变得足够小,以至于您无法区分它们。下一次迭代可以以较小的大小进行渲染,因此我们不必以全分辨率渲染整个关卡40次。但是仍然有一些工作涉及到裁剪、剔除等等。
在OpenGL中,这可以通过使用帧缓冲区对象(FBO)渲染到纹理来完成,也可以直接渲染到最终结果,但使用模具缓冲区进行剪切(感谢datenwolf!)。但是,正如上面的段落所示,这只是故事的开始。如果您刚刚开始使用OpenGL,我担心您完全处于难度级别的错误一端。
(旁白:物理引擎也有一些有趣的事情,其中一个在门户中途的对象需要同时出现在两个地方。另一个令人头疼的问题。)
发布于 2012-11-01 05:14:00
它们的关键字是:模板缓冲区、剪裁平面和递归渲染。
模板缓冲区被用来剪切出视区中的“门户”部分。这是通过渲染场景的主视图时渲染一些辅助几何体来实现的。
在下一步中,场景被进一步渲染,但这一次场景被另一个变换移动,即描述门户彼此之间的相对对齐的变换。然后,在入口平面上放置一个剪裁平面,并渲染场景。在此呈现期间,可能会呈现另一个门户模板,这会触发进一步的递归。为了防止在镜像大厅中出现无限循环的情况,有一个递归限制。
发布于 2012-11-01 04:51:48
我不知道具体细节,但这可以通过几种方式来实现。我假设他们在门户位置使用摄像头和渲染到纹理功能,以便从该视图捕获场景并在门户位置渲染它。它们还允许更多的迭代,我仍然不确定这是如何工作的(可能会降低渲染到纹理的分辨率,直到达到一个像素或预定义的深度值)。
https://stackoverflow.com/questions/13167192
复制相似问题