在GPU与CPU中创建动态几何?

时间:2013-11-06 20:56:23

标签: opengl glsl shader

我的情况是,我有很多(至少数千个)3D形状,这些3D形状由一小组值清晰地定义:质量,中心位置,角度位置,速度,角速度,力和扭矩。例如,假设它们是椭圆体,其形状取决于其中一些值。例如,推动一个球体,它“s”“。旋转得足够快,它会发出光环或其他东西。

这是适合将这些值的数组推送到GPU的东西(如果是这样,推动它们的最佳方法是什么?),并且有着色器(tesselation,几何,什么?)从中创建几何它们?

我想要其他着色器(对于像HDR这样的效果)可以访问原始值...例如,让我们说一个“彗星轨迹”类型的着色器,因此在相反的方向上会出现条纹速度。

再次提出的问题是:将原始值推向GPU并让它做所有事情都是最好的方法,还是采取其他方法更好?

1 个答案:

答案 0 :(得分:0)

通常情况如此,答案是“这取决于。”

就性能而言,在GPU上运行它很可能是最好的方法。正如Andon和datenwolf所写,现代GPU可以完全在GPU上计算和更新状态(例如变换反馈和纹理缓冲区),并且通过点精灵,几何着色器和曲面细分着色器,您可以完全在GPU上生成复杂的精灵和形状同样。仍然,“最有可能”,因为性能的黄金法则是始终编写代码并测量,而不是猜测。

但这是假设现代GPU和OpenGL 4.如果您希望在平板电脑,手机或MacOS上运行,那将无法使用。

此外,这是一个什么样的项目?你是唯一的程序员吗?如果没有,其他程序员(现在还是将来)也将学习现代GPU编程吗?

假设您确实拥有OpenGL 4并希望使用它,那么OpenGL SuperBible第6版就如何在GPU上进行计算和渲染有一些很好的部分。

希望这有帮助。