版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012911202/article/details/87366932
环境:win7_64 + VS2012 + VTK6.0 + CMake2.8
说明:实例使用CMake搭建工程
准备:新建目录E:\vtk_Exercise,在该目录下新建3个文件,分别是CMakeLists.txt,RenderCylinder.h,RenderCylinder.cpp
代码引用:https://blog.csdn.net/www_doling_net/article/details/8536376
步骤
step1:编写CMakeLists.txt,其内容如下
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
SET(VTK_DIR E:/Thirdparty/x64/VTK)
project(RenderCylinder)
INCLUDE_DIRECTORIES(
${VTK_DIR}/include/vtk-6.0
)
LINK_DIRECTORIES(
${VTK_DIR}/lib/${ConfigurationName}
)
add_executable(${PROJECT_NAME} RenderCylinder.cpp RenderCylinder.h)
target_link_libraries(${PROJECT_NAME}
vtkFiltersGeometry-6.0
vtkIOGeometry-6.0
vtkIOCore-6.0
vtkCommonCore-6.0
vtkInteractionStyle-6.0
vtkRenderingOpenGL-6.0
vtkCommonDataModel-6.0
vtkfilterscore-6.0
vtkRenderingCore-6.0
vtkCommonExecutionModel-6.0
vtkFiltersSources-6.0
)
step2:编写RenderCylinder.h
#ifndef _RENDERCYLINDER_H_
#define _RENDERCYLINDER_H_
//这两行代码必须有,否则编译成功,但运行时报错“no override found for。。。”
//适用VTK6.0及之前的版本,关于这点解释,参见https://www.cnblogs.com/cqu-qxl/p/6234763.html
#define vtkRenderingCore_AUTOINIT 2(vtkInteractionStyle,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#endif
step3:编写RenderCylinder.cpp
#include "RenderCylinder.h"
int main()
{
vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New();
cylinder->SetHeight( 3.0 );
cylinder->SetRadius( 1.0 );
cylinder->SetResolution( 10 );
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
cylinderActor->SetMapper( cylinderMapper );
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor( cylinderActor );
renderer->SetBackground( 0.1, 0.2, 0.4 );
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer( renderer );
renWin->SetSize( 300, 300 );
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style);
iren->Initialize();
iren->Start();
return 0;
}
step4:打开cmake-gui.exe,在where is the source code栏填入路径E:\vtk_Exercise,在where to build the binaries栏填入E:\vtk_Exercise\bin(新建bin文件夹,存放*.sln,CMAKE临时文件等),单击左下角Configure,选择Visual Studio 11 Win64,单击Finish
step5:单击Generate
step6:构建工程结束。查看目录E:\vtk_Exercise\bin下,发现很多文件,打开RenderCylinder.sln,将工程RenderCylinder设为Set as Start Project,按下快捷键F7,开始Build工程,等待结束即可。
step7:我build的Debug版,所以再目录E:\vtk_Exercise\bin\Debug,生成RenderCylinder.exe。双击打开即可。实例运行。