Buscar..


Hola mundo ejemplo

#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;
}

Descompostura:

#include <vtkAutoInit.h>

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);

El diseño de VTK utiliza un patrón de diseño de método de fábrica para crear nuevas instancias de clases derivadas de vtkObject usando el método <ClassName>::New() . Esto permite seleccionar una implementación específica de plataforma durante el tiempo de ejecución para satisfacer una interfaz requerida.

Para que este mecanismo funcione, las clases de fábrica deben "registrarse" para que puedan ser seleccionadas por la infraestructura vtk. Los detalles sobre este tema están disponibles aquí .

VTK_MODULE_INIT es una macro utilizada para inicializar automáticamente los módulos / bibliotecas requeridos ( vtkRenderingOpenGL2 , vtkRenderingFreeType , vtkInteractionStyle en este ejemplo). Si no se inicializan los módulos, se producirán llamadas a <ClassName>::New() para devolver NULL y, por lo tanto, errores de tiempo de ejecución.

#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>

vtkSmartPointer función vtkSmartPointer es similar a la de un std::unique_ptr en que administra el recuento de referencia que controla el tiempo de vida de las instancias de la clase derivada vtkObject .

vtkTextActor es una clase simple que se puede usar para mostrar cadenas en la pantalla.

vtkRenderer es una clase responsable de administrar los contenidos de una escena. En concreto gestiona la recogida de

vtkRenderWindow es una clase que proporciona una interfaz independiente de la plataforma para

  • gestionando una colección de renderizadores.
  • el manejo de la entrada del usuario y el reenvío a vtkRenderWindowInteractor para su posterior procesamiento

vtkRenderWindowInteractor es una clase responsable de asignar los eventos de entrada del usuario (mouse / teclado / tiempo) a una acción correspondiente. Internamente utiliza un vtkInteractorStyle para proporcionar diferentes comportamientos de mapeo.

auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");

Crear actor de texto y establecer la cadena para mostrar

auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
  • Crear un renderizador
  • Añade el actor de texto a él.
  • Restablece la posición de la cámara para asegurarse de que el actor esté visible en la pantalla.
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);

Cree una ventana para renderizar, agregue el renderizador y configure el interactor. La función de fábrica seleccionará automáticamente una implementación adecuada en función de las clases de fábrica disponibles / registradas

interactor->Start();

Esta es una llamada de bloqueo que se devuelve solo cuando el usuario solicita un cierre (tecla q ) o cierra la ventana. Ejecuta un bucle de mensajes y despacha los mensajes.

Ejecutar esto debería crear una ventana como esta

Hola Mundo

Notas

Esta lista de DLL que fue utilizada por este exe son:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow