文章
问答
冒泡
vcpkg + VTK 9.2 + VS2022 一站式集成
vcpkg(Visual C++ Packages)是一个开源的C++包管理工具,旨在帮助C++开发人员轻松地下载、构建和管理第三方C++库和依赖项。它是由微软维护和支持的工具,专门为Windows平台和Visual C++编译器而设计,但也可以在其他平台上使用。
 
特点和功能:
  • 跨平台支持:尽管最初是为Windows设计的,但vcpkg现在也在其他平台上可用,如Linux和macOS。这意味着你可以在不同平台上使用相同的包管理工具来管理依赖项。
  • 易于安装和使用:vcpkg本身非常容易安装,并提供了一个简单的命令行界面,使你可以轻松地搜索、安装和升级第三方C++库。
  • 自动依赖项解决:vcpkg能够自动解决库的依赖关系,并确保安装了所需的其他库和依赖项。这可以大大简化依赖项管理的复杂性。
  • 集成到开发环境:vcpkg可以与Visual Studio和其他流行的C++集成开发环境(IDE)无缝配合使用,使你能够直接从IDE中管理和使用依赖项。
  • 大量可用的包:vcpkg维护了一个庞大的C++库的仓库,包括图形库、网络库、数据库库、数学库、游戏开发库等等。这些库是由社区和维护人员贡献的。
  • 自定义脚本支持:你可以通过自定义vcpkg脚本来添加自己的库,或者修改现有库的配置以满足你的项目需求。
  • 跨架构支持:vcpkg支持多种目标架构,如x86、x64、ARM等,以满足不同的编译需求。
 
VTK(Visualization Toolkit)是一个开源的、跨平台的C++库和工具集,专用于3D数据可视化和图形处理。VTK最初由美国洛斯阿拉莫斯国家实验室(Los Alamos National Laboratory)开发,现在由Kitware公司维护。它被广泛用于科学、工程和医学领域,以创建复杂的3D可视化应用程序和进行科学数据分析。
 
特点和功能:
  • 跨平台性:VTK支持多种操作系统,包括Windows、Linux和macOS,使其成为一个跨平台的工具。
  • 模块化结构:VTK采用模块化的结构,包括众多的可视化、图形处理和数据分析模块。这些模块可以根据项目的需求组合使用,使VTK非常灵活。
  • 丰富的可视化功能:VTK提供了丰富的可视化功能,包括体绘制、体积渲染、表面渲染、图形互动、图形用户界面等等。它支持多种数据类型的可视化,如点云、网格、体数据和时序数据。
  • 支持多种数据格式:VTK可以读取和写入多种常见的数据格式,包括VTK格式、STL、OBJ、DICOM、HDF5、XML、PNG等等。
  • 广泛的应用领域:VTK被广泛用于科学可视化、医学图像处理、地球科学、计算流体动力学、有限元分析等领域。它用于创建各种应用程序,包括医学影像分析软件、CAD工具、模拟软件等。
  • 开放源代码和社区支持:VTK是开源的,可以自由使用和修改。它有一个活跃的社区,提供支持、文档和示例,以帮助开发人员学习和使用VTK。
  • 编程接口:VTK提供C++编程接口,但也有Python、Java和Tcl的包装器,以方便不同编程语言的开发人员使用。
 

vcpkg安装

#下载 git clone https://github.com/Microsoft/vcpkg.git

#构建 .\vcpkg\bootstrap-vcpkg.bat

#全局install 以管理员身份运行cmd

cd .\vcpkg

.\vcpkg integrate install
0

vtk安装

.\vcpkg install vtk
 
0
 

vs 2022创建 vtk demo

创建Empty Project
0
新建main.cpp
0
0
main.cpp
 
#include <vtkActor.h>
#include <vtkCylinderSource.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

int main(int, char* [])
{
	vtkNew<vtkNamedColors> colors;

	// Create a sphere
	vtkNew<vtkCylinderSource> cylinderSource;
	cylinderSource->SetCenter(0.0, 0.0, 0.0);
	cylinderSource->SetRadius(5.0);
	cylinderSource->SetHeight(7.0);
	cylinderSource->SetResolution(100);

	// Create a mapper and actor
	vtkNew<vtkPolyDataMapper> mapper;
	mapper->SetInputConnection(cylinderSource->GetOutputPort());
	vtkNew<vtkActor> actor;
	actor->GetProperty()->SetColor(colors->GetColor3d("Cornsilk").GetData());
	actor->SetMapper(mapper);

	// Create a renderer, render window, and interactor
	vtkNew<vtkRenderer> renderer;
	vtkNew<vtkRenderWindow> renderWindow;
	renderWindow->SetWindowName("Cylinder");
	renderWindow->AddRenderer(renderer);
	vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
	renderWindowInteractor->SetRenderWindow(renderWindow);

	// Add the actor to the scene
	renderer->AddActor(actor);
	renderer->SetBackground(colors->GetColor3d("DarkGreen").GetData());


	// Render and interact
	renderWindow->Render();
	renderWindowInteractor->Start();

	return EXIT_SUCCESS;
}
 
 
修改项目属性 Project -> Properties
0
0
Build Solution
0
Run Debug
0
 
运行效果
 
vcpkg

关于作者

Miraclewcg
上善若水
获得点赞
文章被阅读