我正在使用OpenGL绘图技术和CUDA的组合来执行分析。我想用CUDA生成一个渲染缓冲区,然后用OpenGL对它进行分析。由于缓冲区数量众多,我需要在渲染缓冲区完成后释放内存才能使用CUDA,但缓冲区仍然可用于OpenGL。cudaGraphicsGLRegisterImage在不破坏缓冲区的情况下在CUDA中释放内存
更具体而言,我创建缓冲器与
glGenRenderbuffersEXT glBindRenderbufferEXT glRenderbuferStorageEXT
我然后用
cudaGraphicsGLRegisterImage,其使用从存储器寄存器CUDA它们CUDA。但是,当我用
cudaGraphicsUnregisterResource取消注册渲染缓冲区时,内存不会被释放。我不想用
glDeleteBuffers销毁缓冲区,因为我仍然需要它们进行计算,但也需要使用CUDA来处理其他缓冲区。是否有一些其他CUDA调用可以在不破坏缓冲区的情况下释放此内存?
第一个解决方案听起来不错,但我不知道该怎么做。你能指点我用于在CUDA中创建帧缓冲区然后在OpenGL中注册它的一些功能吗? – Alex 2011-05-25 05:58:57