• 【无标题】关于vtk在vs2010中的配置


    1、下载、编译、安装vtk
        下载vtk并用cmake配置和编译vtk(一般使用默认配置即可,可参考网上文章)

    2、使用vs2010打开cmake建立的vtk.sln方案
        重新生成ALL_BUILD
        重新生成INSTALL

    3、建立新项目
        在新项目属性中配置vtk:
        a、设置vc++的包含路径,在其中添加vtk安装路径下的include路径,如:
            C:\Program Files (x86)\VTK630\include\vtk-6.3


        b、设置vc++的库路径,在其中添加vtk安装路径下的lib路径,如:
            C:\Program Files (x86)\VTK630\lib

        c、在连接器->摄入->附加依赖项中添加使用的lib项,如:
            C:\Program Files (x86)\VTK630\lib\*.lib

    4、建立一个vtk例子对象,代码如下(本例代码来源于网络,根据实际环境配置进行了一些修改):

    #include "stdafx.h"


    #ifndef VTKAPP_H_INCLUDE
    #define VTKAPP_H_INCLUDE

    #include"vtkConeSource.h"
    #include"vtkPolyDataMapper.h"
    #include"vtkRenderWindow.h"
    #include"vtkRenderWindowInteractor.h"
    #include"vtkRenderer.h"

    #include "vtkAutoInit.h"

    //自动初始化使用的模块
    VTK_MODULE_INIT(vtkRenderingOpenGL);
    VTK_MODULE_INIT(vtkInteractionStyle);

    class VTKDataObject{
    public:
        VTKDataObject(HWND parent, int wid, int hig);
        ~VTKDataObject();
    private:
        vtkRenderWindow *renWin;
        vtkRenderer *renderer;
        vtkRenderWindowInteractor *iren;
        vtkConeSource *cone;
        vtkPolyDataMapper *coneMapper;
        vtkActor *coneActor;
    };

    VTKDataObject::VTKDataObject(HWND hwnd, int wid, int hig)
    {
        // 创建流水线
        this->renderer = vtkRenderer::New();
        this->renWin = vtkRenderWindow::New();
        this->renWin->AddRenderer(this->renderer);

        // 启动渲染窗口的父窗口
        this->renWin->SetParentId(hwnd);
        this->iren = vtkRenderWindowInteractor::New();
        this->iren->SetRenderWindow(this->renWin);

        this->cone = vtkConeSource::New();
        this->cone->SetHeight( 3.0 );
        this->cone->SetRadius( 1.0 );
        this->cone->SetResolution( 20 );
        this->coneMapper = vtkPolyDataMapper::New();
        this->coneMapper->SetInputConnection(this->cone->GetOutputPort());
        this->coneActor = vtkActor::New();
        this->coneActor->SetMapper(this->coneMapper);

        this->renderer->AddActor(this->coneActor);
        this->renderer->SetBackground(0.2,0.4,0.3);
        this->renWin->SetSize(wid,hig);

        // 启动交互
        this->renWin->Render();
    }
    //析构函数
    VTKDataObject::~VTKDataObject()
    {
        renWin->Delete();
        renderer->Delete();
        iren->Delete();
        cone->Delete();
        coneMapper->Delete();
        coneActor->Delete();
    }

    #endif


    在winproc函数的onclose中添加:

        case WM_CLOSE:
            if (vtkWin != NULL){
                delete vtkWin;
                vtkWin = NULL;
            }
            break;

    其中:
        VTKDataObject *vtkWin = NULL;
    为全局变量

    在相应的菜单命令中建立子窗口并导出vtk对象(本人环境):

    void ktv_envStartCMD(HWND hWnd, int wParam)
    {
        HWND hwd;
        //
        newNamedWindow( "VTK_Render窗口",CV_WINDOW_AUTOSIZE );
        hwd = newFindChildWindow("VTK_Render窗口");
        newSetSizeOfWindow("VTK_Render窗口", 0,0,768,768);
        vtkSetWinProc("VTK_Render窗口");
        if (!vtkWin){
            delete vtkWin;
            vtkWin = NULL;
        }
        vtkWin = new VTKDataObject(hwd, 768, 768);
    }

    运行程序后将窗所要的结果。

    需要注意的是:
        #include "vtkAutoInit.h"

        //自动初始化使用的模块
        VTK_MODULE_INIT(vtkRenderingOpenGL);
        VTK_MODULE_INIT(vtkInteractionStyle);

    对于使用vtk的其他模块,可能还需要初始化其他的模块功能,参考网上提供能资料结合自身的环境做相应的修改即可。不需要拷贝*.dll等文件。


     

  • 相关阅读:
    Redis_08_Redis集群实现主从复制应对高并发
    Windows提权
    【Python】pytorch,CUDA是否可用,查看显卡显存剩余容量
    出差学小白知识No6:LD_PRELOAD变量路径不对找不到库文件
    程序员在工作之余如何保障收入?兼职才是硬道理!
    对Python3.8配置OpenCV4.5.5中
    [附源码]java毕业设计基于web的硕士研究生入学考务管理
    【毕业季·进击的技术er】1076万毕业生,史上最难就业季?卷又卷不过,躺又躺不平,敢问路在何方?
    Python——比 Seaborn 更好的相关性热力图:Biokit Corrplot
    编译器设计(十一)——标量优化
  • 原文地址:https://blog.csdn.net/chchzh/article/details/126297076