#include <vtkConeSource.h>
#include <vtkCylinderSource.h>
#include <vtkCubeSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkCamera.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
int main()
{
// 圆锥
vtkSmartPointer<vtkConeSource> source = vtkSmartPointer<vtkConeSource>::New();
source->SetHeight(3.0);
source->SetRadius(1.0);
source->SetResolution(10);
// 圆柱
/*vtkSmartPointer<vtkCylinderSource> source = vtkSmartPointer<vtkCylinderSource>::New();
source->SetResolution(8);*/
// 立方体
/*vtkSmartPointer<vtkCubeSource> source = vtkSmartPointer<vtkCubeSource>::New();
source->SetXLength(3);
source->SetYLength(2);
source->SetZLength(1);*/
// Mapper
vtkSmartPointer<vtkPolyDataMapper> coneMapper = vtkSmartPointer<vtkPolyDataMapper> ::New();
coneMapper->SetInputConnection(source->GetOutputPort());
// Actor
vtkSmartPointer<vtkActor> coneActor = vtkSmartPointer<vtkActor>::New();
coneActor->SetMapper(coneMapper);
// Renderer
vtkSmartPointer<vtkRenderer> ren1 = vtkSmartPointer<vtkRenderer>::New();
ren1->AddActor(coneActor);
ren1->SetBackground(0.1, 0.2, 0.4);
// RenderWindow
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(ren1);
renWin->SetSize(300, 300);
// RenderWindowInteractor
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor> ::New();
iren->SetRenderWindow(renWin);
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
iren->SetInteractorStyle(style);
renWin->SetSize(600, 600);
renWin->Render();
iren->Start();
return 0;
}