我正在尝试使用 OpenGL 和 CUDA 实现点云,其中点的半径将根据与它们相关的一些数据随时间变化。
由于我对 OpenGL 和 CUDA 完全陌生,因此我很难实现这一目标。在学习了 OpenGL、GLSL 和 CUDA 的基础知识之后,我完全不知道程序的哪些部分应该如何实现。
我的想法如下:
- 使用带有顶点位置的 VBO
- 使用具有顶点半径的 VBO
- 使用具有顶点不确定性的 VBO。基于此数据,顶点的半径应以动画方式变化
- 每帧计算 CUDA 内核中所有顶点的半径
- 调用 glDrawArrays 渲染所有点并使用顶点着色器,它从数组中获取所有数据作为输入
首先......为此目的一起使用CUDA和GLSL着色器是否合理?由于我已经阅读了一些有关使用其中一个或另一个的内容,因此我不确定。
第二个问题是,程序的哪些部分将在 CPU 上执行,哪些在 GPU 上执行?在内核中计算数据然后将其传递回OpenGL显示函数进行渲染是否有意义?