0 错误描述
在VTK-6.3.0中使用vtkVolumeRayCastMapper来实现体绘制, 结果出现错误:
Generic Warning: In D:\VTK\VTK-6.3.0\Rendering\Volume\vtkRayCastImageDisplayHelper.cxx, line 20
Error: no override found for 'vtkRayCastImageDisplayHelper'.
1 解决方法
在main()函数的开始位置添加:
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL);
2 解决过程
如何知道上述的vtkRenderingVolumeOpenGL呢? 在《VTK Error: no override found for 'vtkVolumeTextureMapper2D'.》已经提供了一个方法,但是实践起来还是有一定的困难,这里给出一个更好的方法。下面是详细的步骤。
(1)通过VTK-6.3.0的帮助文档找到vtkVolumeRayCastMapper的一个案例:
(2)在VTK-6.3.0源码中找到上述Medical4.cxx所在目录(VTK-6.3.0/Examples/Medical/),里面有一个CMakeLists.txt文件:
(3)打开上述CMakeList.txt文件,找到find_package部分的内容:
上图中vtkRenderingVolume$(VTK_RENDERING_BACKEND),就是vtkVolumeRayCastMapper所需要的模块。那么VTK_RENDERING_BACKEND的值是什么呢?
(4)打开VTK-6.3.0/Rendering/Volume/CMakeList.txt,在其最后有关于VTK_RENDERING_BACKEND的值的判断:
因此可以猜测VTK_RENDERING_BACKEND指的是OpenGL的版本,要么是OpenGL,要么是OpenGL2。VTK-6.3.0默认使用OpenGL(VTK-7.0.0已经改为OpenGL2),因此VTK_RENDERING_BACKEND的值为OpenGL或者OpenGL2,本文选择前者。