vtk
Hej världen
Sök…
Hej världsexempel
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
int main(int /*argc*/, char ** /*argv*/)
{
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
interactor->Start();
return 0;
}
Bryta ner:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK-design använder ett fabriksmetodens designmönster för att skapa nya instanser av vtkObject- härledda klasser med <ClassName>::New()
. Detta gör det möjligt att välja en plattformsspecifik implementering under körning för att tillfredsställa ett nödvändigt gränssnitt.
För att denna mekanism ska fungera måste fabriksklasser "registrera" sig själva så att de kan väljas av vtk-infrastrukturen. Detaljer om detta ämne finns här .
VTK_MODULE_INIT
är ett makro som används för att automatiskt initiera de erforderliga modulerna / biblioteken (erna) ( vtkRenderingOpenGL2
, vtkRenderingFreeType
, vtkInteractionStyle
i detta exempel). Underlåtenhet att initiera modulerna kommer att resultera i <ClassName>::New()
samtal för att returnera NULL
och därför runtime-fel.
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
vtkSmartPointer
rollen liknar den för en std::unique_ptr
att den hanterar referensräkningen som styr livslängden för vtkObject
härledda vtkObject
.
vtkTextActor
är en enkel klass som kan användas för att visa strängar på skärmen.
vtkRenderer
är en klass som ansvarar för att hantera scenens innehåll. Det hanterar specifikt samlingen av
- 2D-skådespelare härrörande från
vtkActor2D
- 3D-skådespelare härrörande från
vtkProp3D
- Volymer:
vtkVolume
- Kamera:
vtkCamera
- Ljus:
vtkLight
vtkRenderWindow
är en klass som ger plattformsoberoende gränssnitt för
- hantera en samling återgivare.
- hantera användarinmatning och vidarebefordra den till
vtkRenderWindowInteractor
för vidare bearbetning
vtkRenderWindowInteractor
är en klass som ansvarar för att kartlägga användarinmatning (mus / tangentbord / timing) till en motsvarande åtgärd. Internt använder den en vtkInteractorStyle
att ge olika kartbeteenden.
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
Skapa textaktör och ställ strängen att visas
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
- Skapa en återgivare
- Lägg till textaktören till den
- Återställer kamerans position för att se till att skådespelaren är synlig på skärmen.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
Skapa ett fönster att återge i, lägg renderaren till det och ställ in interaktorn. Fabriksfunktionen väljer automatiskt en lämplig implementering baserat på tillgängliga / registrerade fabriksklasser
interactor->Start();
Detta är ett blockerande samtal som bara återkommer när användaren begär en avslutning ( q- tangent) eller stänger fönstret. Kör en meddelandeslinga och skickar meddelandena.
Att köra detta bör skapa ett fönster som ser ut så här
anteckningar
Denna lista över DLL-filer som användes av detta exe är:
VTKCommonCore-7.0.DLL
VTKInteractionStyle-7.0.DLL
VTKRenderingCore-7.0.DLL
VTKRenderingFreeType-7.0.DLL
VTKRenderingOpenGL2-7.0.DLL