Szukaj…


Przykład Hello World

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

Awaria:

#include <vtkAutoInit.h>

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

Projekt VTK używa wzorca projektowania metody fabryki do tworzenia nowych instancji klas pochodnych vtkObject przy użyciu metody <ClassName>::New() . Umożliwia to wybranie implementacji specyficznej dla platformy w czasie wykonywania, aby spełnić wymagany interfejs.

Aby ten mechanizm działał, klasy fabryczne muszą się „zarejestrować”, aby mogły zostać wybrane przez infrastrukturę VTK. Szczegóły na ten temat są dostępne tutaj .

VTK_MODULE_INIT to makro używane do automatycznej inicjalizacji wymaganych modułów / bibliotek ( vtkRenderingOpenGL2 , vtkRenderingFreeType , vtkInteractionStyle w tym przykładzie). Nie zainicjowanie modułów spowoduje <ClassName>::New() celu zwrócenia wartości NULL a tym samym błędów w czasie wykonywania.

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

Rola vtkSmartPointer jest podobna do roli std::unique_ptr , ponieważ zarządza liczbą odwołań sterujących czasem życia instancji klas pochodnych vtkObject .

vtkTextActor to prosta klasa, której można używać do wyświetlania napisów na ekranie.

vtkRenderer to klasa odpowiedzialna za zarządzanie zawartością sceny. W szczególności zarządza kolekcją

vtkRenderWindow to klasa zapewniająca interfejs niezależny od platformy

  • zarządzanie kolekcją rendererów.
  • obsługa danych wejściowych użytkownika i przekazywanie ich do vtkRenderWindowInteractor celu dalszego przetwarzania

vtkRenderWindowInteractor to klasa odpowiedzialna za mapowanie zdarzeń wejściowych użytkownika (mysz / klawiatura / synchronizacja) na odpowiednią akcję. Wewnętrznie używa vtkInteractorStyle do zapewnienia różnych zachowań mapowania.

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

Utwórz aktora tekstowego i ustaw ciąg do wyświetlenia

auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
  • Utwórz renderer
  • Dodaj do niego aktora tekstowego
  • Resetuje pozycję kamery, aby aktor był widoczny na ekranie.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);

Utwórz okno do renderowania, dodaj do niego renderer i ustaw interactor. Funkcja fabryczna automatycznie wybierze odpowiednią implementację na podstawie dostępnych / zarejestrowanych klas fabrycznych

interactor->Start();

Jest to wywołanie blokujące, które zwraca się tylko wtedy, gdy użytkownik zażąda wyjścia (klawisz q ) lub zamknie okno. Uruchamia pętlę komunikatów i wysyła wiadomości.

Uruchomienie tego powinno stworzyć okno, które wygląda tak

Witaj świecie

Notatki

Ta lista bibliotek DLL używanych przez tego exe to:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow