Zoeken…


Hallo wereld voorbeeld

#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;
}

Afbreken:

#include <vtkAutoInit.h>

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);

VTK-ontwerp gebruikt een ontwerppatroon van de fabrieksmethode om nieuwe instanties van afgeleide klassen van vtkObject te maken met behulp van de methode <ClassName>::New() . Hierdoor kan een platformspecifieke implementatie tijdens runtime worden geselecteerd om aan een vereiste interface te voldoen.

Om dit mechanisme te laten werken, moeten fabrieksklassen zichzelf "registreren", zodat ze door de vtk-infrastructuur kunnen worden geselecteerd. Details over dit onderwerp zijn hier beschikbaar.

VTK_MODULE_INIT is een macro die wordt gebruikt om de vereiste modules / bibliotheek (en) automatisch te initialiseren ( vtkRenderingOpenGL2 , vtkRenderingFreeType , vtkInteractionStyle in dit voorbeeld). Als de modules niet worden geïnitialiseerd, resulteert dit in <ClassName>::New() -aanroepen om NULL te retourneren en dus runtime-fouten.

#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>

vtkSmartPointer rol van vtkSmartPointer is vergelijkbaar met die van een std::unique_ptr in die zin dat het de referentietelling beheert die de levensduur van van vtkObject afgeleide klasse-instanties beheert.

vtkTextActor is een eenvoudige klasse die kan worden gebruikt om tekenreeksen op het scherm weer te geven.

vtkRenderer is een klasse die verantwoordelijk is voor het beheer van de inhoud van een scène. In het bijzonder beheert het de verzameling van

vtkRenderWindow is een klasse die platformonafhankelijke interface biedt voor

  • beheer van een verzameling renderers.
  • gebruikersinvoer verwerken en doorsturen naar vtkRenderWindowInteractor voor verdere verwerking

vtkRenderWindowInteractor is een klasse die verantwoordelijk is voor het toewijzen van gebeurtenissen van gebruikersinvoer (muis / toetsenbord / timing) aan een overeenkomstige actie. Intern gebruikt het een vtkInteractorStyle om verschillende vtkInteractorStyle te bieden.

auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");

Maak een tekstacteur en stel de tekenreeks in om weer te geven

auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
  • Maak een renderer
  • Voeg de tekstacteur eraan toe
  • Reset de camerapositie om ervoor te zorgen dat de acteur zichtbaar is op het scherm.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);

Maak een venster om in te renderen, voeg de renderer eraan toe en stel de interactor in. De fabrieksfunctie kiest automatisch een geschikte implementatie op basis van de beschikbare / geregistreerde fabrieksklassen

interactor->Start();

Dit is een blokkeeroproep die alleen terugkeert wanneer de gebruiker een afsluiting ( q- toets) aanvraagt of het venster sluit. Voert een berichtenlus uit en verzendt de berichten.

Als u dit uitvoert, moet er een venster worden gemaakt dat er zo uitziet

Hallo Wereld

Notes

Deze lijst met DLL's die door deze exe zijn gebruikt, is:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow