gpt4 book ai didi

c++ - 没有弃用功能的 CUDA + OpenGL Interop

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:36 25 4
gpt4 key购买 nike

我之前已经能够通过以下方式在 CUDA 中填充纹理以用于 OpenGL:

  1. 创建并初始化 GL 纹理(gl::GenTextures() 等)
  2. 创建 GL 像素缓冲区对象
  3. 向 CUDA 注册 PBO

在更新/渲染循环中:

  1. cudaGraphicsMapResource() 与 PBO
  2. 启动内核以更新 PBO
  3. cudaGraphicsUnmapResource() 来自 CUDA 的 PBO
  4. 加载GL程序,绑定(bind)纹理,正常渲染
  5. 重复清洗、漂洗。

但是,我想知道 PBO 是否仍然是从内核编写纹理的最佳方式。我看过类似 this one 的文章( updated for v5 here ) 似乎根本没有使用 PBO。

我看到了一些对 cudaTextureObjectcudaSurfaceObject 的引用,但我不清楚它们在 OpenGL 互操作中的作用。

PBO 仍然是推荐的方法吗?如果不是,我应该研究哪些替代方案?

(我专门针对 Kepler 和更新的架构。)

最佳答案

您可以在 CUDA 6 SDK 中的官方示例中看到,它在“3_Imaging”目录中称为“simpleCUDA2GL”。它有两种不同的方法来访问 CUDA 内核中的纹理。其中之一(我认为是旧的)使用 PBO,它在我的机器上慢了 3 倍。

关于c++ - 没有弃用功能的 CUDA + OpenGL Interop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com