【发布时间】:2012-08-09 05:14:02
【问题描述】:
我的 xna 游戏中有一个照明系统,它循环遍历每个灯光,并将这些灯光添加到包含所有灯光的最终灯光贴图中。
创建这些灯光的过程涉及到许多与图形设备有关的功能,例如使用效果/着色器和绘图来渲染目标,以及使用 graphics.device.clear 来清除渲染目标等
所以我的问题是,是否可以对每个灯进行多线程处理?或者这是不可能的,因为只有 1 个图形设备,并且一次只能使用 1 个线程?如果可能的话,它会提高性能吗?
【问题讨论】:
-
GPU 所做的一切都已经在数百个线程中并行化。在对 GPU 进行编程时,不要考虑 CPU 线程。
-
但是在 XNA 编程中,你已经将你的图形设备设置为一个目标渲染目标,你绘制的所有东西都指向那个目标,这意味着你的 gpu 所做的一切都指向那个目标。做我想做的事情的过程涉及使用多个渲染目标和多次更改图形设备目标,所以如果我创建了这个进程的多个线程,它们会相互干扰吗?
标签: c# multithreading performance xna gpu