VTK/Examples/Cxx/Visualization/MultipleViewports
From KitwarePublic
This example creates a window with 4 viewports.
MultipleViewports.cxx
#include <vtkSphereSource.h> #include <vtkProperty.h> #include <vtkPolyData.h> #include <vtkSmartPointer.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteractor.h> #include <vtksys/ios/sstream> int main(int, char *[]) { vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindowInteractor->SetRenderWindow(renderWindow); // Define viewport ranges double xmins[4] = {0,.5,0,.5}; double xmaxs[4] = {0.5,1,0.5,1}; double ymins[4] = {0,0,.5,.5}; double ymaxs[4]= {0.5,0.5,1,1}; for(unsigned i = 0; i < 4; i++) { vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderWindow->AddRenderer(renderer); renderer->SetViewport(xmins[i],ymins[i],xmaxs[i],ymaxs[i]); // Create a sphere vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New(); sphereSource->SetCenter(0.0, 0.0, 0.0); sphereSource->SetRadius(5); sphereSource->Update(); // Create a mapper and actor vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(sphereSource->GetOutputPort()); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); renderer->AddActor(actor); renderer->ResetCamera(); renderWindow->Render(); renderWindow->SetWindowName("Multiple ViewPorts"); } renderWindowInteractor->Start(); return EXIT_SUCCESS; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(MultipleViewports) FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) ADD_EXECUTABLE(MultipleViewports MultipleViewports.cxx) TARGET_LINK_LIBRARIES(MultipleViewports vtkHybrid)
Something besides grey spheres on black background! Different colored backgrounds will show the separation between the renderers.
