有没有适当的方法可以访问VTK的低级OpenGL对象,以便使用openGL-CUDA/OpenCL互操作功能从CUDA/OpenCL内核中修改它们?具体来说,我想要从vtkOpenGLGPUVolumeRayCastMapper中获取GLuint(或unsigned int)成员,该成员指向存储数据集的Opengl 3D纹理对象,以将其绑定到CUDA Surface上,从而能够从我的CUDA内核中访问和修改其值。更多信息,请参见此处需要遵循的过程:http://rauwendaal.net/2011/12/02/writing-to-3d-opengl-textures-in-cuda-4-1-with-3d-surface-writes/,其中在步骤1和2中使用的texID对象相当于我想从VTK检索的内容。
初看vtkOpenGLGPUVolumeRayCastMapper函数,我没有发现容易的方法来做到这一点,除非可能创建一个vtkGPUVolumeRayCastMapper子类,但即使在这种情况下,我也不确定应该修改什么,因为我猜想其他成员依赖于3D纹理值,并且在修改后也应该进行更新。
那么,你知道有什么方法可以做到这一点吗?
非常感谢。