vtk
Bonjour le monde
Recherche…
Bonjour Monde Exemple
#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;
}
Panne:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
La conception de VTK utilise un modèle de conception de méthode d'usine pour créer de nouvelles instances de classes dérivées de vtkObject à l'aide de la méthode <ClassName>::New()
. Cela permet à une implémentation spécifique à une plate-forme d'être sélectionnée pendant l'exécution pour satisfaire une interface requise.
Pour que ce mécanisme fonctionne, les classes d'usine doivent "s'inscrire" elles-mêmes afin qu'elles puissent être sélectionnées par l'infrastructure vtk. Les détails sur ce sujet sont disponibles ici .
VTK_MODULE_INIT
est une macro utilisée pour initialiser automatiquement les modules / bibliothèques requis ( vtkRenderingOpenGL2
, vtkRenderingFreeType
, vtkInteractionStyle
dans cet exemple). <ClassName>::New()
pas à initialiser les modules, les <ClassName>::New()
des erreurs NULL
et donc à l'exécution.
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
vtkSmartPointer
rôle vtkSmartPointer
est similaire à celui d'un std::unique_ptr
en ce qu'il gère le compteur de références qui contrôle la durée de vie des vtkObject
de vtkObject
dérivées de vtkObject
.
vtkTextActor
est une classe simple qui peut être utilisée pour afficher des chaînes à l'écran.
vtkRenderer
est une classe chargée de gérer le contenu d'une scène. Plus précisément, il gère la collecte de
- Acteurs 2D dérivés de
vtkActor2D
- Acteurs 3D dérivés de
vtkProp3D
- Volumes:
vtkVolume
- Caméra:
vtkCamera
- Lumières:
vtkLight
vtkRenderWindow
est une classe qui fournit une interface indépendante de la plate-forme pour
- gérer une collection de rendus.
- gérer les entrées de l'utilisateur et les transmettre à
vtkRenderWindowInteractor
pour un traitement ultérieur
vtkRenderWindowInteractor
est une classe chargée de mapper les événements d'entrée utilisateur (souris / clavier / synchronisation) sur une action correspondante. En interne, il utilise un vtkInteractorStyle
pour fournir différents comportements de mappage.
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
Créer un acteur de texte et définir la chaîne à afficher
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
- Créer un moteur de rendu
- Ajoutez-y l'acteur de texte
- Réinitialise la position de la caméra pour vous assurer que l’acteur est visible sur l’écran.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
Créez une fenêtre dans laquelle effectuer le rendu, ajoutez-y le moteur de rendu et définissez l'interacteur. La fonction d'usine choisira automatiquement une implémentation appropriée en fonction des classes d'usine disponibles / enregistrées
interactor->Start();
Il s'agit d'un appel bloquant qui ne renvoie que lorsque l'utilisateur demande une fermeture (touche q ) ou ferme la fenêtre. Exécute une boucle de message et distribue les messages.
En cours d'exécution cela devrait créer une fenêtre qui ressemble à ceci
Remarques
Cette liste de DLL utilisées par cet exe est la suivante:
VTKCommonCore-7.0.DLL
VTKInteractionStyle-7.0.DLL
VTKRenderingCore-7.0.DLL
VTKRenderingFreeType-7.0.DLL
VTKRenderingOpenGL2-7.0.DLL