vtk
Witaj świecie
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ą
- Aktorzy 2D pochodzący z
vtkActor2D
- Aktorzy 3D pochodzący z
vtkProp3D
- Woluminy:
vtkVolume
- Kamera:
vtkCamera
- Światła:
vtkLight
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
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