总结一下VTK使用过程中的一些错误:

           1、非编译错误

          这部分错误并不是因为你错误使用VTK类或者是逻辑问题而导致的错误,而是因为缺失一些初始化的头文件而导致的错误

         需要在main函数中先添加初始化头文件:

#include <vtkAutoInit.h>

           错误一:VTK Error: no override found for 'vtkVolumeTextureMapper2D'.

                            Error: no override found for 'vtkRayCastImageDisplayHelper'.

       在main函数中添加:

VTK_MODULE_INIT(vtkRenderingVolumeOpenGL)

       错误二:  Error: no override found for  'vtkImageMapper'. 

在main函数中添加:

VTK_MODULE_INIT(vtkRenderingOpenGL) 

      错误三:  Error:Could not locate vtkTextRenderer object. 

在main函数中添加:

VTK_MODULE_INIT(vtkRenderingFreeType)

     错误四:Error: Link to vtkinteractionstyle

在main函数中添加:

VTK_MODULE_INIT(vtkInteractionStyle) 

    错误五:VTK6.3.0:Error: no override found for 'vtkContextDevice2D'

在main函数中添加

VTK_MODULE_INIT(vtkRenderingContextOpenGL)


2 错误使用VTK类

1ERROR: In D:\VTK\VTK-6.3.0\Rendering\OpenGL\vtkOpenGLDisplayListPainter.cxx, line 188

vtkOpenGLDisplayListPainter (000001AC0C582AE0): failed after RenderInternal 1 OpenGL errors detected

0 : (1282) Invalid operation

测试解决:去掉vtkrender->render()函数。原因不明 猜想可能是重复调用render函数

VTK文档描述该函数:

virtual void vtkRenderer::Render

(

 

)

[virtual]

CALLED BY vtkRenderWindow ONLY. End-user pass your way and call vtkRenderWindow::Render(). Create an image. 

所以调用的是vtkrenderwindowrender函数。

2、

VTK: VTK Error 问题集_main函数

问题原因:在切换重建模型时候 Actor没有被移除

Renderer->removeactor 要先移除旧的actor再添加新的actor

3、ERROR:

vtkOpenGLExtensionManager (00000232ABF21E00): Extension GL_VERSION_1_2 could not be loaded.

 问题出现位置:使用三维纹理映射来实现体重建,运行时弹出的bug,

原因分析:VTK三维纹理映射类:vtkVolumeTextureMapper3D只其支持两种显卡nvidia和ATI;电脑默认的显卡使用的是集成显卡(已集成显卡的配置自然是不能很好的支持OPENGL)而不是独显。手动切换到独显。详细的切换方法:双显卡切换




未完 待续。。。。。。。。。。。。。