vtk環境搭建 見(VTK開發環境配置(Visual Studio C++)-詳細圖文教程-CSDN博客)
在學習vtk圖形圖像進階的第二章時,通過vs2022建的控制臺程序,編寫運行示例2.1 發現 不顯示圖像。
#include <iostream>
#include<vtkRenderWindow.h>
#include<vtkSmartPointer.h>
#include<vtkRenderWindowInteractor.h>
#include<vtkCylinderSource.h>
#include<vtkPolyDataMapper.h>
#include<vtkRenderer.h>
#include<vtkInteractorStyleTrackballCamera.h>
#include<vtkActor.h>
int main()
{std::cout << "vtk";vtkSmartPointer<vtkCylinderSource> cylinder =vtkSmartPointer<vtkCylinderSource>::New();if (!cylinder) {std::cerr << "Failed to create vtkCylinderSource" << std::endl;return 1;}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;
}
經過查找資料,發現可能原因是?動態鏈接庫的加載在不同平臺上可能有不同的機制和優先級。默認情況下,VTK 可能無法準確找到并加載所需的動態鏈接庫。
所以通過使用?vtkAutoInit.h
?和相關的?VTK_MODULE_INIT
?宏確保所有必要的 VTK 模塊被正確初始化
解決方法
在上面的代碼開頭添加
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
然后可以顯示圖像了。
本小節知識總結,
vtkCylinderSource生成一個理想化的圓柱體幾何模型。
vtkPolyDataMapper渲染多邊形幾何數據。
vtkActor連接幾何數據與渲染場景,并賦予其可視化屬性。
vtkRenderWindow 將操作系統和vtk渲染引擎連接到一起。
vtkRenderer負責管理場景的渲染過程。
vtkRenderWindowInteractor 提供獨立的響應事件的交互。
vtkInteractorStyleTrackballCamera交互器樣式的一種,用戶通過控制相機對物體進行旋轉,放大,縮小等操作。