2

我想知道是否有人有任何好的模式来处理 Xbox 360 的 XNA 中的照明。我目前正在尝试实现聚光灯组件。我读过关于延迟着色作为降低复杂性的一种方法。我还听说这对 Xbox 360 来说不是一个好主意,而且在 XNA 4.0 中比在 XNA 3.0 中更难。我的目标是制作一个可重用的组件,它封装了可在游戏中使用的聚光灯效果。

谢谢,

-约翰

4

1 回答 1

1

延迟渲染允许您在世界本身被渲染后应用光照。

  • 它确实降低了复杂性,因为您不必在绘制模型之前选择哪些灯光会影响模型(通常是最接近/最重要的灯光)。

  • 它可以使半透明处理和抗锯齿更加复杂。

  • 它允许应用许多灯光并在场景中移动,这对于前向照明来说是不切实际的。

  • 它需要存在多个缓冲区 - 至少一个几何缓冲区,但正常和镜面缓冲区也很有帮助。存在打包此类缓冲区的技术,但它们确实需要更多内存,并使用带宽进行写入。这意味着延迟渲染比前向渲染具有更高的前期成本,但在灯光数量和移动它们方面提供了更大的灵活性。

  • 星际争霸 2、战争机器和其他游戏使用延迟渲染器,因此它无疑是一个经过验证的解决方案。

  • 在 XNA 4 下的复杂性方面并没有太大的不同,这里是一个显示 XNA 4 下的实现的链接。主要区别是必须显式存储 z 缓冲区的副本而不是直接访问它。http://roy-t.nl/index.php/tag/deferred-rendering/你也可以考虑轻预通http://jcoluna.wordpress.com/

既然您想要聚光灯效果,我可以理解您为什么要考虑延迟渲染,因为我猜聚光灯是动态的。但是,如果您以前没有使用过延迟渲染,我建议您浏览上面的 Roy 链接,以确定您是否对成本/复杂性感到满意。

于 2012-06-20T15:17:00.977 回答