我想知道门户网站游戏的工作方式.你可以站在一个门户和另一个门户之间,它是如此迷人.
每次你拍摄一个门户网站时,也许,这个级别被复制了吗?或者只是相机/视锥/视口效果?
我想在OpenGL中开发它,有什么建议吗?
这对他们来说是一个噩梦.通过"导演的评论"玩游戏,你会得到一些有趣的采访提及它.
这是基本的想法.当您查看蓝色门户网站时,您不是在查看关卡的副本,而只是从不同的角度查看相同的内容.引擎从橙色门户"后面"的视角呈现通过门户看到的部分,对应于您在蓝色门前的位置.需要特别注意不要在虚拟视点和橙色门户背面之间显示任何内容.视锥体被调整为仅包括您可以通过蓝色门户看到的位.
但这不是整个故事,因为如果你可以通过另一个看到一个门户怎么办?你会得到一个"无限"的反馈效果.在实践中,效果实际上并不是无限的; 它只是进行了足够的迭代(比如40),直到图像变得足够小,你无法区分它们.每个下一次迭代都可以以较小的尺寸渲染,因此我们不必以全分辨率渲染整个级别40次.但是仍然有剪辑,剔除等工作.
在OpenGL中,这可以通过使用帧缓冲对象(FBO)渲染到纹理,或直接渲染到最终结果但使用模板缓冲区剪切(感谢datenwolf!)来实现.但是,正如上面的段落所示,这只是故事的开头.如果你刚刚开始使用OpenGL,我恐怕你完全处于难度范围的错误结束.
(旁白:物理引擎也有一些有趣的事情,一个门户中途的对象需要同时在两个地方.另一个很头疼.)
它们的关键字是:模板缓冲区,剪切平面和递归渲染。
模板缓冲区用于剪切视口中的“门户”部分。这是通过在渲染场景的主视图时渲染一些辅助几何体来实现的。
在下一步中,将场景渲染一遍,但是这次是通过另一种转换来移动场景,即描述门户之间的相对对齐的场景。然后将裁剪平面放置在门户平面上,并渲染场景。在此渲染过程中,可能会渲染另一个门户模板,从而触发进一步的递归。为了防止在镜厅中出现无限循环,存在递归限制。