操作系统:win 10
QT: 5.15.2
VTK : 9.1
1、从官网下载vtk 库现在已经更新到9.2.2 了
2、下载Cmake
3、使用Cmake 编译vtk源码
注意点 :
1、有三个路径,source build install
2、对应Qt的安装位置
4、使用vs 生产要bulid 两次,一次是debug 还有一次是release
如何先键的项目是这种情况,那么就说明我们确实vtk 相关的库,我们要在pro 文件中加载库
# VTK
win32:CONFIG(release, debug|release):LIBS += -LD:/pcl_lib/VTK/lib\
-lvtkChartsCore-9.1\
-lvtkCommonColor-9.1\
-lvtkCommonComputationalGeometry-9.1\
-lvtkCommonCore-9.1\
-lvtkCommonDataModel-9.1\
-lvtkCommonExecutionModel-9.1\
-lvtkCommonMath-9.1\
-lvtkCommonMisc-9.1\
-lvtkCommonSystem-9.1\
-lvtkCommonTransforms-9.1\
-lvtkDICOMParser-9.1\
-lvtkDomainsChemistry-9.1\
-lvtkDomainsChemistryOpenGL2-9.1\
-lvtkdoubleconversion-9.1\
-lvtkexodusII-9.1\
-lvtkexpat-9.1\
-lvtkFiltersAMR-9.1\
-lvtkFiltersCore-9.1\
-lvtkFiltersExtraction-9.1\
-lvtkFiltersFlowPaths-9.1\
-lvtkFiltersGeneral-9.1\
-lvtkFiltersGeneric-9.1\
-lvtkFiltersGeometry-9.1\
-lvtkFiltersHybrid-9.1\
-lvtkFiltersHyperTree-9.1\
-lvtkFiltersImaging-9.1\
-lvtkFiltersModeling-9.1\
-lvtkFiltersParallel-9.1\
-lvtkFiltersParallelImaging-9.1\
-lvtkFiltersPoints-9.1\
-lvtkFiltersProgrammable-9.1\
-lvtkFiltersSelection-9.1\
-lvtkFiltersSMP-9.1\
-lvtkFiltersSources-9.1\
-lvtkFiltersStatistics-9.1\
-lvtkFiltersTexture-9.1\
-lvtkFiltersTopology-9.1\
-lvtkFiltersVerdict-9.1\
-lvtkfmt-9.1\
-lvtkfreetype-9.1\
-lvtkGeovisCore-9.1\
-lvtkgl2ps-9.1\
-lvtkglew-9.1\
-lvtkGUISupportQt-9.1\
-lvtkGUISupportQtQuick-9.1\
-lvtkGUISupportQtSQL-9.1\
-lvtkhdf5-9.1\
-lvtkhdf5_hl-9.1\
-lvtkImagingColor-9.1\
-lvtkImagingCore-9.1\
-lvtkImagingFourier-9.1\
-lvtkImagingGeneral-9.1\
-lvtkImagingHybrid-9.1\
-lvtkImagingMath-9.1\
-lvtkImagingMorphological-9.1\
-lvtkImagingSources-9.1\
-lvtkImagingStatistics-9.1\
-lvtkImagingStencil-9.1\
-lvtkInfovisCore-9.1\
-lvtkInfovisLayout-9.1\
-lvtkInteractionImage-9.1\
-lvtkInteractionStyle-9.1\
-lvtkInteractionWidgets-9.1\
-lvtkIOAMR-9.1\
-lvtkIOAsynchronous-9.1\
-lvtkIOCGNSReader-9.1\
-lvtkIOChemistry-9.1\
-lvtkIOCityGML-9.1\
-lvtkIOCONVERGECFD-9.1\
-lvtkIOCore-9.1\
-lvtkIOEnSight-9.1\
-lvtkIOExodus-9.1\
-lvtkIOExport-9.1\
-lvtkIOExportGL2PS-9.1\
-lvtkIOExportPDF-9.1\
-lvtkIOGeometry-9.1\
-lvtkIOHDF-9.1\
-lvtkIOImage-9.1\
-lvtkIOImport-9.1\
-lvtkIOInfovis-9.1\
-lvtkIOIOSS-9.1\
-lvtkIOLegacy-9.1\
-lvtkIOLSDyna-9.1\
-lvtkIOMINC-9.1\
-lvtkIOMotionFX-9.1\
-lvtkIOMovie-9.1\
-lvtkIONetCDF-9.1\
-lvtkIOOggTheora-9.1\
-lvtkIOParallel-9.1\
-lvtkIOParallelXML-9.1\
-lvtkIOPLY-9.1\
-lvtkIOSegY-9.1\
-lvtkIOSQL-9.1\
-lvtkioss-9.1\
-lvtkIOTecplotTable-9.1\
-lvtkIOVeraOut-9.1\
-lvtkIOVideo-9.1\
-lvtkIOXML-9.1\
-lvtkIOXMLParser-9.1\
-lvtkjpeg-9.1\
-lvtkjsoncpp-9.1\
-lvtkkissfft-9.1\
-lvtklibharu-9.1\
-lvtklibproj-9.1\
-lvtklibxml2-9.1\
-lvtkloguru-9.1\
-lvtklz4-9.1\
-lvtklzma-9.1\
-lvtkmetaio-9.1\
-lvtknetcdf-9.1\
-lvtkogg-9.1\
-lvtkParallelCore-9.1\
-lvtkParallelDIY-9.1\
-lvtkpng-9.1\
-lvtkpugixml-9.1\
-lvtkRenderingAnnotation-9.1\
-lvtkRenderingContext2D-9.1\
-lvtkRenderingContextOpenGL2-9.1\
-lvtkRenderingCore-9.1\
-lvtkRenderingFreeType-9.1\
-lvtkRenderingGL2PSOpenGL2-9.1\
-lvtkRenderingImage-9.1\
-lvtkRenderingLabel-9.1\
-lvtkRenderingLOD-9.1\
-lvtkRenderingOpenGL2-9.1\
-lvtkRenderingQt-9.1\
-lvtkRenderingSceneGraph-9.1\
-lvtkRenderingUI-9.1\
-lvtkRenderingVolume-9.1\
-lvtkRenderingVolumeOpenGL2-9.1\
-lvtkRenderingVtkJS-9.1\
-lvtksqlite-9.1\
-lvtksys-9.1\
-lvtkTestingRendering-9.1\
-lvtktheora-9.1\
-lvtktiff-9.1\
-lvtkverdict-9.1\
-lvtkViewsContext2D-9.1\
-lvtkViewsCore-9.1\
-lvtkViewsInfovis-9.1\
-lvtkViewsQt-9.1\
-lvtkWrappingTools-9.1\
-lvtkzlib-9.1
然后执行qmake,并进行编译和运行
首先在UI界面个widget ,布局成水平布局
运行看一下,没有问题。
QOpenGLWidget允许在平台支持时使用不同的OpenGL版本和配置文件。只需通过setFormat()设置请求的格式。但在同一窗口中有多个QOpenGLWidget,要求它们都使用相同的格式,或者至少不是环境共享的格式。要解决此问题,使用QSurfaceFormat :: setDefaultFormat(),而不是setFormat()。
注意:在请求OpenGL核心配置文件上下文时,在构造QApplication实例之前调用QSurfaceFormat :: setDefaultFormat()在某些平台(例如,macOS)上是必需的。这是为了确保上下文之间的资源共享保持功能,因为所有内部上下文都是使用正确的版本和配置文件创建的
vtkPolyData数据生成 vtkPolyDataMapper.h
VTK修炼之道43:图形进阶_vtkPolyData数据生成与显示_沈子恒的博客-CSDN博客
vtkActor:
VTK 学习----VTK对象-演员类_charce_you的博客-CSDN博客_vtkpropassembly
表示渲染场景中的对象(几何和属性)。
vtkActor用于表示呈现场景中的实体。它继承了vtkProp中与角色位置和方向相关的函数。actor还具有缩放功能,并维护对定义几何的引用(即、呈现属性,可能还有纹理映射。vtkActor将这些实例变量组合成一个4x4转换矩阵
vtk学习记录(三)——初识vtkRenderer - AprilBlank - 博客园
vtkRenderer
vtkSmartPointer
VTK智能指针——vtkSmartPointer_shaoguang_cn的博客-CSDN博客_vtksmartpointer
VKT宏初始化:
在使用vtk 之前一定要在前面加上初始化的相关代码,不然程序当中是无法new 出对象的
#include "vtkAutoInit.h" // vtk初始化的方式 VTK_MODULE_INIT(vtkRenderingOpenGL2); // 渲染 VTK_MODULE_INIT(vtkInteractionStyle); // 相互做用方式 VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); // VTK_MODULE_INIT(vtkRenderingFreeType);
// 获得默认的opengl的配置
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat(true));
vtkNew colors;
vtkNew shereSource;
vtkNew shereMapper;
shereMapper->SetInputConnection(shereSource->GetOutputPort());
// 声明一个actor 类,然后使用这个类来显示球体
vtkNew shereActor;
shereActor->SetMapper(shereMapper);
// 设置颜色
shereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
// 渲染
vtkNew renderer;
renderer->AddActor(shereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
// 显示renderer 的窗口
vtkNew renderwindow;
renderwindow->AddRenderer(renderer);
renderwindow->SetWindowName("RenderWindowNoUIFile");
// 最后开始调用
QHBoxLayout * hl=new QHBoxLayout(this);
hl->addWidget(ui->qvtkWidget);
ui->qvtkWidget->setRenderWindow(renderwindow);
setLayout(hl);