vtk
Hallo Wereld
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
- 2D-acteurs afgeleid van
vtkActor2D
- 3D-acteurs afgeleid van
vtkProp3D
- Volumes:
vtkVolume
- Camera:
vtkCamera
- Lichten:
vtkLight
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
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