0

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

这是否适合将这些值的数组推送到 GPU (如果是,推送它们的最佳方法是什么?),并让着色器(镶嵌、几何,什么?)从它们创建几何?

而且我希望其他着色器(用于 HDR 等效果)能够访问原始值......例如,假设“彗星轨迹”类型的着色器,因此在与速度相反的方向上会出现条纹。

又是一个问题:将原始值推送到 GPU 并让它做所有事情是最好的方法,还是采取其他方法更好?

4

1 回答 1

0

通常情况下,答案是“视情况而定”。

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

但这是假设现代 GPU 和 OpenGL 4。如果您希望它在平板电脑、手机或 MacOS 上运行,这将不可用。

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

假设您确实有 OpenGL 4 并且想要使用它,OpenGL SuperBible 第 6 版有一些很好的部分介绍了如何完全在 GPU 上进行计算和渲染。

希望这可以帮助。

于 2013-11-07T23:37:13.710 回答