文章目录
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
RenderingCore
RenderingFreeType
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 vtk1
MODULES ${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. 演示效果