从dll访问GPU上的数据?

时间:2014-06-27 00:54:24

标签: memory dll gpu

问题在于:一个修改3D应用程序的顶点坐标(很多)的插件。 所有顶点都已经在GPU内存中,因此在那里发送另一个副本,进行计算,将结果发送回主内存并最终让主机应用程序再次将它们发送到GPU进行更新似乎相当浪费。我确实需要在某个时刻返回计算值,但性能问题是显示器的快速更新。一旦变形完成,我真的不关心将更新的坐标放到主存储器中需要多长时间。

这一切都可能吗? 我刚开始学习OpenGL / OpenCL,所以我不是要求详细解释这个过程。只有它是以正常方式行事,还是只通过某种深奥的黑客行为,或者根本不行。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

是的,可以使用OpenGL和OpenCL。首先需要在OpenGL中创建顶点缓冲区。然后,您可以创建可以与OpenGL共享数据的OpenCL上下文。您可以使用clEnqueueAcquireGLObjects来获取指向缓​​冲区的指针。显然还有更多,谷歌OpenGL OpenCL互操作或OpenGL OpenCL共享上下文的必要代码。

注意:如果是关闭源代码和预构建应用程序,则可能无法获取GL上下文。