【问题标题】:Animated Point Radii with CUDA and OpenGL使用 CUDA 和 OpenGL 的动画点半径
【发布时间】:2012-12-18 22:35:11
【问题描述】:

我正在尝试使用 OpenGL 和 CUDA 实现点云,其中点的半径将根据与它们相关的一些数据随时间变化。

由于我对 OpenGL 和 CUDA 完全陌生,因此我很难实现这一目标。在学习了 OpenGL、GLSL 和 CUDA 的基础知识之后,我完全不知道程序的哪些部分应该如何实现。

我的想法如下:

  • 使用带顶点位置的 VBO
  • 使用带顶点半径的 VBO
  • 使用具有顶点不确定性的 VBO。根据此数据,顶点的半径应以动画方式变化
  • 计算每帧 CUDA 内核中所有顶点的半径
  • 调用 glDrawArrays 来渲染所有点并使用顶点着色器,从数组中获取所有数据作为输入

首先...为此目的一起使用 CUDA 和 GLSL 着色器是否合理?由于我已经阅读了一些关于使用其中一种或另一种的内容,因此我不确定。

第二个问题是,程序的哪些部分将在 CPU 上执行,哪些在 GPU 上执行?在内核中计算数据然后传回OpenGL显示函数进行渲染有意义吗?

【问题讨论】:

    标签: opengl cuda interop vbo point-clouds


    【解决方案1】:

    首先...一起使用CUDA和GLSL着色器是合理的 以此目的?因为我已经阅读了一些关于使用任何一个的东西 或者其他,我不确定。

    不,这不合理。如果您的目标是获取图像 - 使用 OpenGL。如果您的目标是进行一些繁重的计算(乘以大矩阵等),请使用 CUDA。

    您可以在没有 CUDA 的情况下计算顶点着色器中所有顶点的半径。使用统一变量将时间信息传递给着色器。纯 OpenGL 方法会快得多,因为不需要内核启动和额外的数据传输。

    第二个问题是,程序的哪些部分会被执行 在 CPU 上,哪个在 GPU 上?计算数据有意义吗 在内核中,然后将其传递回 OpenGL 显示函数以 渲染它?

    GLSL 着色器和 CUDA 内核在 GPU 上执行。其他代码 - 在 CPU 上。如果您可以计算渲染管道中的所有内容(并且您可以),那么 CUDA 启动就毫无意义。

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      相关资源
      最近更新 更多