不,您错了-这根本不是Duke Nukem 3D镜子的工作原理。
DN3D使用了门户引擎。任何两个扇区之间的联合在一定程度上都是任意的,并且当渲染引擎到达门户时,它知道它必须开始渲染其中的另一个扇区。镜子后面的区域基本上是占位符,用于处理引擎中的异常现象-该区域的唯一要点是大于您需要“反射”的内容。它不包含任何实际几何图形。实际上,它与Portal中“门户”的工作方式几乎相同-区别在于Portal(本身基于门户引擎)在运行时创建门户,并且对门户可以递归的次数有限制(即A -> B-> A-> B-> A ...),而如果将一个镜像指向另一个镜像,则Build(DN3D)会因为堆栈溢出而完全崩溃。
很明显这是多么简单的实现与镜子-做一个门户网站,点背进了房间。这意味着渲染镜子的成本与渲染房间本身的成本完全相同,从而提供了出色的性能和一致性。只要您没有将镜像指向另一个镜像,就是这样。如果您查看Build引擎的源代码,您会发现根本没有代码处理镜像-不必一个,因为门户就是这样工作的。 注意:实际上,有代码可以翻转渲染的像素-它只是不翻转几何图形以及所有各种精灵和效果。但是,编辑器必须能够创建这些“伪”门户,并且要回顾自身。如果您想了解更多有关非常聪明的Build引擎的信息,Fabien Sanglard在Build引擎内部进行了很好的分析。整个引擎都是开源的,也可以移植到现代平台上,尽管旧的引擎在Windows 10上仍然可以完美运行(为您测试:P)。许多基于Build的游戏也已开源和/或重新制作。
为什么不再使用它?好吧,其中一些引擎不再喜欢门户网站。应用许多图形技巧和优化是很棘手的-我无法为您指出任何特定的东西,但是很多后处理取决于在真正的门户网站引擎中不起作用的技巧(他们做出了许多假设,不再成立)。这基本上与这些游戏的立体图像具有相同的问题-骇客不再起作用。
最重要的是,镜子变得更加复杂。它们可能具有复杂的形状,纹理,它们可能在地面上(也称为“水”)等。尽管所有这些问题都可以在门户引擎中解决,但是RTT在某些时候成为更简单的选择,并且GPU足够快处理它。
然而,尽管如此,仍有许多具有硬件3D加速功能的游戏可以“真实地”完成工作。在较早的游戏中,例如Quake 3或Alien vs. Predator。据我所知,Source引擎游戏仍然使用“真实”镜像。如果您希望人们会靠近镜子,并且可以保证同时没有太多反射表面(例如通过水平设计),则门镜仍然非常有吸引力。