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

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

Hallo Welt

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



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow