一、编译
编译教程
编译问题:INSTALL项目,右键点击生成,setlocal命令出错error MSB3073
(如果你的可执行文件不在系统盘,就没有这个问题)
解决方法:使用管理员打开vs2019
二、配置步骤:
配置项目要选择debug,x64
1.配置.lib文件(静态链接库)
dir .lib/B>lib.txt
2.配置.h文件
3.配置.dll文件(动态链接库)
方法一:
方法二:
系统环境变量中添加路径:C:\Program Files\VTK\bin
4.配置类型改为exe
问题1:找不到dll
解决方案:调试->环境中,添加PATH环境“PATH=你的bin目录;%PATH%”
问题2:无法解析的外部符号:链接器->输入->附加依赖项,缺少lib文件
解决方案:使用FarManager检索链接符号
下载链接
Alt+F7
使用教程
三、运行一个程序
教程
与书上不同需加入:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
vtkRenderingOpenGL 改为 vtkRenderingOpenGL2
#include<vtkSmartPointer.h>
#include<vtkConeSource.h>
#include<vtkPolyDataMapper.h>
#include<vtkActor.h>
#include<vtkRenderer.h>
#include<vtkRenderWindow.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkInteractorStyleTrackballCamera.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType)
int main()
{
//圆锥模型
vtkSmartPointer<vtkConeSource> cone = vtkSmartPointer<vtkConeSource>::New();
cone->SetHeight(3.0);
cone->SetRadius(1.0);
cone->SetResolution(10);
//映射器
vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
coneMapper->SetInputConnection(cone->GetOutputPort());
//对象
vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
coneActor->SetMapper(coneMapper);
//渲染
vtkSmartPointer<vtkRenderer>renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(coneActor);
renderer->SetBackground(0.0, 1.0, 1.0);
//渲染窗口
vtkSmartPointer<vtkRenderWindow>renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(renderer);
renWin->SetSize(600, 400);
//交互
vtkSmartPointer<vtkRenderWindowInteractor>renderInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderInteractor->SetRenderWindow(renWin);
//交互风格
vtkSmartPointer<vtkInteractorStyleTrackballCamera>style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
renderInteractor->SetInteractorStyle(style);
renderInteractor->Initialize();
renderInteractor->Start();
return 0;
}