2

大家好,我想开发一个灯光/激光表演编辑器和模拟器,为此我当然要学习一些图形编程。我正在考虑使用 C# 和 XNA。

我只是想知道考虑到我正在从事的项目,我应该研究或关注图形编程的哪些方面。我是图形编程的新手,所以我不太了解它,但例如我想我可能会研究的东西(可能?)是体积照明。

例如,渲染不同宽度/颜色的“激光”的实用方法是什么?我在某处读到只是画一个圆柱体并对其应用着色器,我想确认这是方法。

鉴于这似乎是一个大项目,我正在考虑从创建光源并赋予它们属性开始,以便我可以轻松地操纵它们。我(误)读到在任何给定时间只能渲染一定数量的灯光,我相信是八个。这仅适用于环境光吗?考虑到这种可能的限制,而且我将使用的大多数灯光都是定向的,例如头灯或激光,那么渲染它们的不同方式是什么?那就是体积照明吗?

在我深入研究之前,我只是想弄清楚一些事情。由于我是新手,所以我可能没有充分利用单词,所以如果有什么不明白的地方,请告诉我。感谢并为我的无知感到抱歉。

4

3 回答 3

1

这个问题的答案取决于您在显示模拟中所需的复杂程度。计算机图形学最终是对光传输的模拟;这种模拟可以像计算被大气中的粒子偏转到观察者视点的激光比例一样复杂,或者像画一条线一样简单。试试圆柱效果,看看它是否适用于您的项目。如果您需要更复杂的东西,请查看着色器编程(例如,使用 Nvidia Cg)和您提到的体积着色;后处理发光效果也可能有用。对于OpenGL,我相信有8个限制?场景中的光源,但是您可以通过执行自己的着色逻辑来绕过这个限制。

于 2009-10-06T19:13:23.760 回答
1

好吧,如果它只是用于灯光秀模拟,我想你会需要很多自定义灯光效果 - 所以无论你决定使用 XNA 还是直接 DirectX,你最好的选择是从学习着色器语言以及如何编程各种使用它们的照明效果。一旦您可以重现您想要的激光照明类型,您就可以尝试使用您想要用来表示激光的多边形。(我在一些工作中出于个人目的使用了圆柱方法,但我不确定直圆柱是否适合您的目的)。

于 2009-10-06T19:15:20.983 回答
0

虽然它更快,但我认为最好不要使用香草硬件照明,因为它的局限性。像素着色器可以帮助您完成任务。此外,您可能希望选择 OpenGL,因为它具有可移植性和渲染方法的清晰性。在切换到 OpenGL 之前,我在 Direct3D 上工作了几年。OpenGL 函数和状态更容易学习,渲染方法(如多通道渲染)非常清晰。如果你喜欢在 C# 上编写代码(我不推荐这些任务),你可以使用 CsGL 库来访问 OpenGL 函数。

于 2009-10-06T19:20:06.600 回答