vtk
Hallo Welt
Suche…
Hallo Weltbeispiel
#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;
}
Nervenzusammenbruch:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
Der VTK-Entwurf verwendet ein Factory-Methodentwurfsmuster , um mithilfe der <ClassName>::New()
-Methode neue Instanzen vtkObject- abgeleiteter Klassen zu erstellen. Dadurch kann eine plattformspezifische Implementierung zur Laufzeit ausgewählt werden, um eine erforderliche Schnittstelle zu erfüllen.
Damit dieser Mechanismus funktioniert, müssen Factory-Klassen sich selbst "registrieren", damit sie von der vtk-Infrastruktur ausgewählt werden können. Details zu diesem Thema finden Sie hier .
VTK_MODULE_INIT
ist ein Makro, mit dem die erforderlichen Module / Bibliotheken automatisch initialisiert werden (in diesem Beispiel vtkRenderingOpenGL2
, vtkRenderingFreeType
und vtkInteractionStyle
). Wenn die Module nicht initialisiert werden, führen die Aufrufe von <ClassName>::New()
dazu, NULL
und damit Laufzeitfehler zurückzugeben.
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
vtkSmartPointer
Rolle ähnelt der einer std::unique_ptr
indem sie den Referenzzähler verwaltet, der die Lebensdauer von von vtkObject
abgeleiteten Klasseninstanzen steuert.
vtkTextActor
ist eine einfache Klasse, mit der Zeichenfolgen auf dem Bildschirm angezeigt werden können.
vtkRenderer
ist eine Klasse, die für die Verwaltung des Inhalts einer Szene verantwortlich ist. Insbesondere verwaltet es die Sammlung von
- Von
vtkActor2D
abgeleitete 2D-Akteure - Von
vtkProp3D
abgeleitete 3D-Akteure - Volumes:
vtkVolume
- Kamera:
vtkCamera
- Lichter:
vtkLight
vtkRenderWindow
ist eine Klasse, die eine plattformunabhängige Schnittstelle für bietet
- Verwalten einer Sammlung von Renderern.
- Benutzereingaben verarbeiten und zur weiteren Verarbeitung an
vtkRenderWindowInteractor
weiterleiten
vtkRenderWindowInteractor
ist eine Klasse, die für die Zuordnung der Benutzereingabeereignisse (Maus / Tastatur / Timing) zu einer entsprechenden Aktion verantwortlich ist. Intern wird ein vtkInteractorStyle
, um verschiedene Mapping-Verhalten bereitzustellen.
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
Erstellen Sie einen Textakteur und legen Sie die anzuzeigende Zeichenfolge fest
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
- Erstellen Sie einen Renderer
- Fügen Sie den Textschauspieler hinzu
- Setzt die Kameraposition zurück, um sicherzustellen, dass der Schauspieler auf dem Bildschirm sichtbar ist.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
Erstellen Sie ein Fenster zum Rendern, fügen Sie den Renderer hinzu und legen Sie den Interaktor fest. Die Factory-Funktion wählt automatisch eine geeignete Implementierung basierend auf den verfügbaren / registrierten Factory-Klassen aus
interactor->Start();
Dies ist ein blockierender Aufruf, der nur zurückkehrt, wenn der Benutzer einen Abbruch anfordert (Taste q ) oder das Fenster schließt. Führt eine Nachrichtenschleife aus und verteilt die Nachrichten.
Wenn Sie dies ausführen, sollte ein Fenster erstellt werden, das so aussieht
Anmerkungen
Diese Liste der DLLs, die von diesem Exe verwendet wurden, ist:
VTKCommonCore-7.0.DLL
VTKInteractionStyle-7.0.DLL
VTKRenderingCore-7.0.DLL
VTKRenderingFreeType-7.0.DLL
VTKRenderingOpenGL2-7.0.DLL