vtk
Ciao mondo
Ricerca…
Ciao esempio del mondo
#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;
}
Abbattersi:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
La progettazione VTK utilizza un modello di progettazione del metodo factory per creare nuove istanze di classi derivate vtkObject utilizzando il metodo <ClassName>::New()
. Ciò consente di selezionare un'implementazione specifica della piattaforma durante il runtime per soddisfare un'interfaccia richiesta.
Affinché questo meccanismo funzioni, le classi factory devono "registrarsi" in modo che possano essere selezionate dall'infrastruttura vtk. I dettagli su questo argomento sono disponibili qui .
VTK_MODULE_INIT
è una macro utilizzata per inizializzare automaticamente i moduli / le librerie richiesti ( vtkRenderingOpenGL2
, vtkRenderingFreeType
, vtkInteractionStyle
in questo esempio). La mancata inizializzazione dei moduli comporterà chiamate <ClassName>::New()
per restituire NULL
e quindi errori di runtime.
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
vtkSmartPointer
ruolo vtkSmartPointer
è simile a quello di std::unique_ptr
in quanto gestisce il conteggio dei riferimenti che controlla la durata delle istanze di classe derivate vtkObject
.
vtkTextActor
è una classe semplice che può essere utilizzata per visualizzare le stringhe sullo schermo.
vtkRenderer
è una classe responsabile della gestione dei contenuti di una scena. In particolare gestisce la raccolta di
- Attori 2D derivati da
vtkActor2D
- Attori 3D derivati da
vtkProp3D
- Volumi:
vtkVolume
- Fotocamera:
vtkCamera
- Luci:
vtkLight
vtkRenderWindow
è una classe che fornisce un'interfaccia indipendente dalla piattaforma
- gestire una collezione di riproduttori.
- gestire l'input dell'utente e inoltrarlo a
vtkRenderWindowInteractor
per un'ulteriore elaborazione
vtkRenderWindowInteractor
è una classe responsabile della mappatura degli eventi di input dell'utente (mouse / tastiera / timing) ad un'azione corrispondente. Internamente utilizza un vtkInteractorStyle
per fornire diversi comportamenti di mappatura.
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
Crea un attore di testo e imposta la stringa da visualizzare
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
- Crea un renderer
- Aggiungi l'attore di testo ad esso
- Ripristina la posizione della telecamera per assicurarsi che l'attore sia visibile sullo schermo.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
Crea una finestra per eseguire il rendering, aggiungi il renderer e imposta l'interactor. La funzione di fabbrica sceglierà automaticamente un'implementazione adatta in base alle classi di fabbrica disponibili / registrate
interactor->Start();
Questa è una chiamata di blocco che viene restituita solo quando l'utente richiede una chiusura (tasto q ) o chiude la finestra. Esegue un ciclo di messaggi e invia i messaggi.
L'esecuzione di questo dovrebbe creare una finestra simile a questa
Gli appunti
Questo elenco di DLL che sono stati utilizzati da questo exe sono:
VTKCommonCore-7.0.DLL
VTKInteractionStyle-7.0.DLL
VTKRenderingCore-7.0.DLL
VTKRenderingFreeType-7.0.DLL
VTKRenderingOpenGL2-7.0.DLL