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

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

Bonjour le monde

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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow