8.5_DirectX互操作性

8.5 DirectX互操作性

虽然我们只讨论了与OpenGL之间的互操作性,但与 DirectX之间的互操作性几乎是相同的。你仍然通过cudaGraphicsResource来表示在 DirectX与CUDA之间共享的缓冲区,并且调用cudaGraphicsMapResources()和cudaGraphicsResourceGetMappedPointer()来获得这些共享资源的CUDA指针。

在很大程度上,OpenGL互操作性与 DirectX互操作性之间的差异是很小的,因此要使用DietX也是非常简单的。例如,在使用 DirectX时,将调用cudaD3D9SetDirect3DDevice()而不是CUDAGLSetGLDevice()来指定某个CUDA设备应该启用Direct3D 9.0互操作性。类似的是,cudaD3D10SetDirect3DDevice()启用设备支持Direct3D 10互操作性,而udaD3D11SetDirect3DDevice()启用设备支持Direct3D 11互操作性。

如果你学习并理解了本章的OpenGL示例,那么将不会对 DirectX互操作性感到陌生。如果想通过 DirectX互操作性来实现一个小项目,那么我建议你将本章的示例修改为使用 DirectX。我们建议参考NVIDIA CUDA编程指南,了解这个API并阅读GPU Computing SDK中与 DirectX互操作性相关的代码示例。

8.5_DirectX互操作性 - CUDA by Example | OpenTech