我有一个用 OpenGL 构建的场景。当我的灯在房间中央时,房间外面就亮了。有什么简单的方法可以让 OpenGL 在顶点处停止照明,还是需要复杂的计算。以下是我的蹩脚、快速场景的照片,显示了问这个问题时的照明情况:
问问题
1230 次
2 回答
1
这里的一个解决方案可能是以某种方式创作几何图形,即对象不会突出到墙外(或将它们分成内部/外部部分)。然后用不同的灯光渲染内部和外部。
如果一切都会给一切投下阴影,你就不会有问题。
如果灯光是静态的,您可能需要考虑预先计算(烘焙)光照(连同阴影)。您可以在许多 3D 包中执行此操作,从编程的角度来看,这可能是最简单的解决方案。
如果你有一个针对每盏灯的实时渲染阴影的通用解决方案,那也可以解决你的问题,但这是一项具有挑战性的任务,而且如果你想保持良好的帧,它也可能不是最佳选择——率。
如果您想了解实时阴影渲染,我建议您查看阴影贴图——它们通常是当今大多数游戏中使用的解决方案。请注意,对于点光源,您需要为立方体贴图的 6 个面渲染阴影贴图。出于实际目的,您应该真正考虑哪些灯光真正需要投射阴影,并做出某种权衡。
于 2016-01-30T18:52:09.377 回答