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

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

Hej världen

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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow