【发布时间】:2014-01-18 02:10:31
【问题描述】:
是否有可能使用任何现有的 API(opengl、directx 等)直接将 CUDA/OPENCL 结果绘制到屏幕上?跳过典型的绘制纹理四边形方法。
即使注册资源并使用现代 CUDA 互操作方法,我们仍然必须遍历整个渲染管道才能渲染一组颜色。对于像我这样每毫秒都很重要的应用程序,这是一个问题。
【问题讨论】:
-
我非常怀疑。 CUDA/OpenCL 不挂钩到光栅化管道。您不仅需要管道,还需要一个由操作系统连接的句柄(在带有客户端/服务器模型的 openGL 中)编辑:“opencl 1.1 现在允许与 opencl 代码共享 opengl 上下文”,但它仍然需要通过 openGL 进行初始化
-
没有独立于平台的方式来做到这一点。但是,您也许可以做一些在实践中有效的东西。您能否提供有关您在哪种平台上开发的任何详细信息?
-
我一直想知道是否有一种方法可以修改开源驱动程序,以便为我提供某种类型的句柄以在 Linux 上使用,但现在我还没有想到。而且我更喜欢使用 Nvidia 卡
-
我同意,您不会在任何现代操作系统中看到此功能。但是,您可以想象在嵌入式情况下看到它,您可以将帧缓冲区地址传递给可以直接写入它的内核。现在不太可能,即使是手机也使用 OpenGL 之类的东西进行 UI 合成。最好的办法是写入纹理,然后使用操作系统或 OpenGL 函数来绘制它(或使其成为场景图的一部分)。
标签: opengl cuda directx opencl