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

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

Ciao mondo

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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow