vtk
Hola Mundo
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
- Actores 2D derivados de
vtkActor2D
- Actores 3D derivados de
vtkProp3D
- Volúmenes:
vtkVolume
- Cámara:
vtkCamera
- Luces:
vtkLight
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
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