簡體   English   中英

CUDA + OpenGL Interop,不建議使用功能

[英]CUDA + OpenGL Interop without deprecated functionality

我以前可以通過以下方式在CUDA中填充紋理以供在OpenGL中使用:

  1. 創建並初始化GL紋理( gl::GenTextures()等)
  2. 創建GL像素緩沖區對象
  3. 向CUDA注冊PBO

在更新/渲染循環中:

  1. 使用PBO的cudaGraphicsMapResource()
  2. 啟動內核以更新PBO
  3. cudaGraphicsUnmapResource()來自CUDA的PBO
  4. 加載GL程序,綁定紋理,正常渲染
  5. 洗滌,重復沖洗。

但是,我想知道PBO是否仍然是從內核寫入紋理的最佳方法。 我看過類似這樣的文章( 在此針對v5更新 ),這些文章似乎根本沒有使用PBO。

我已經看到了一些對cudaTextureObjectcudaSurfaceObject引用,但是我不清楚它們在OpenGL互操作中的作用。

PBO仍然是推薦的方法嗎? 如果沒有,我應該研究哪些替代方案?

(我專門針對開普勒和較新的體系結構。)

您可以在CUDA 6 SDK的官方示例中看到它,在“ 3_Imaging”目錄中稱為“ simpleCUDA2GL”。 它有兩種不同的方法來訪問CUDA內核中的紋理。 其中一個(我認為是舊的)使用PBO,在我的計算機上速度要慢3倍。

您可能想看一下NVIDIA的最新CUDA GL Interop示例:

https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM