文章目录 1. 概述 2. CMake链接VTK 3. main.cpp文件 4. 演示效果
1. 概述
VTK C++开发示例程序; 使用C++ 和VTK绘制一个多面锥体。
环境 说明 系统 ubuntu22.04、windows11 cmake 3.22 、3.25Qt 5.14.2 编译器 g++11.4、msvc2017 VTK 9.4.1
2. CMake链接VTK
cmake_minimum_required( VERSION 3.20 FATAL_ERROR) project( vtk1)
set( CMAKE_CXX_STANDARD 14 )
if( MSVC) set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8" )
endif( )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /.. /bin)
set( VTK_DIR "E:/lib/VTK/lib/cmake/vtk-9.4" )
find_package( VTK COMPONENTS CommonColor CommonCore FiltersSources InteractionStyle RenderingContextOpenGL2 RenderingCoreRenderingFreeType RenderingOpenGL2
) if ( NOT VTK_FOUND) message( FATAL_ERROR "VTK 没找到" ) return( )
endif( ) add_executable( vtk1 main.cpp) target_link_libraries( vtk1 PRIVATE ${VTK_LIBRARIES} )
vtk_module_autoinit( TARGETS vtk1MODULES ${VTK_LIBRARIES}
)
3. main.cpp文件
# include <vtkNew.h>
# include <vtkPolyDataMapper.h>
# include <vtkRenderWindow.h>
# include <vtkRenderWindowInteractor.h>
# include <vtkRenderer.h>
# include <vtkConeSource.h> # include <vtkAutoInit.h>
VTK_MODULE_INIT ( vtkRenderingOpenGL2) ;
VTK_MODULE_INIT ( vtkInteractionStyle) ; int main ( int , char * [ ] )
{ auto coneSource = vtkSmartPointer < vtkConeSource> :: New ( ) ; coneSource-> SetHeight ( 3.0 ) ; coneSource-> SetRadius ( 1.5 ) ; coneSource-> SetResolution ( 6 ) ; auto mapper = vtkSmartPointer < vtkPolyDataMapper> :: New ( ) ; mapper-> SetInputConnection ( coneSource-> GetOutputPort ( ) ) ; auto actor = vtkSmartPointer < vtkActor> :: New ( ) ; actor-> SetMapper ( mapper) ; auto renderer = vtkSmartPointer < vtkRenderer> :: New ( ) ; auto renderWindow = vtkSmartPointer < vtkRenderWindow> :: New ( ) ; renderWindow-> SetWindowName ( "VTK最简单示例" ) ; renderWindow-> AddRenderer ( renderer) ; renderWindow-> SetSize ( 800 , 600 ) ; auto interactor = vtkSmartPointer < vtkRenderWindowInteractor> :: New ( ) ; interactor-> SetRenderWindow ( renderWindow) ; renderer-> AddActor ( actor) ; renderer-> SetBackground ( 0.2 , 0.3 , 0.4 ) ; renderWindow-> Render ( ) ; interactor-> Start ( ) ; return EXIT_SUCCESS;
}
4. 演示效果