VTK学习笔记-1

/* ----------------------------------------------------------
 * 文件名称:main.cpp
 * 作者:秦建辉
 *
 * 微信:splashcn
 *
 * 开发环境:
 *      Visual Studio V2019
 *      VTK 9.0.1
 *
 * 版本历史:
 *
 *      V1.0    2021年04月23日
 *              VTK例子代码
------------------------------------------------------------ */

#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkAutoInit.h>

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

// vtkSmartPointer
#pragma comment(lib,"vtkCommonCore-9.0.lib")

// vtkRenderWindow
#pragma comment(lib,"vtkRenderingCore-9.0.lib")

// vtkInteractorStyle
#pragma comment(lib,"vtkInteractionStyle-9.0.lib")

// vtkRenderingOpenGL2
#pragma comment(lib,"vtkRenderingOpenGL2-9.0.lib")

// vtkCylinderSource
#pragma comment(lib,"vtkFiltersSources-9.0.lib")

// vtkAlgorithm
#pragma comment(lib,"vtkCommonExecutionModel-9.0.lib")

int main()
{
	// 生成一个中心在渲染场景原点的柱体
	vtkSmartPointer<vtkCylinderSource>cylinder = vtkSmartPointer<vtkCylinderSource>::New();
	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);

	// 将操作系统与VTK渲染引擎结合起来,负责管理本地计算机系统中窗口创建和渲染过程
	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 EXIT_SUCCESS;
}

Comments are closed.