Поиск…


Привет, мир

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

Сломать:

#include <vtkAutoInit.h>

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

Конструкция VTK использует шаблон проектирования фабричного метода для создания новых экземпляров производных классов vtkObject с использованием метода <ClassName>::New() . Это позволяет выбрать конкретную реализацию платформы во время выполнения, чтобы удовлетворить требуемый интерфейс.

Чтобы этот механизм работал, фабричные классы должны «регистрироваться» самостоятельно, чтобы их можно было выбрать инфраструктурой vtk. Подробности по этой теме доступны здесь .

VTK_MODULE_INIT - это макрос, используемый для автоматического инициализации необходимых модулей / библиотек ( vtkRenderingOpenGL2 ) ( vtkRenderingOpenGL2 , vtkRenderingFreeType , vtkInteractionStyle в этом примере). Невозможность инициализации модулей приведет к <ClassName>::New() для возврата NULL и, следовательно, ошибок времени выполнения.

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

Роль vtkSmartPointer аналогична роли std::unique_ptr в том, что она управляет счетчиком ссылок, который управляет временем жизни vtkObject производного класса vtkObject .

vtkTextActor - это простой класс, который можно использовать для отображения строк на экране.

vtkRenderer - это класс, ответственный за управление содержимым сцены. В частности, он управляет сбором

vtkRenderWindow - это класс, который обеспечивает платформенный независимый интерфейс для

  • управление коллекцией рендеринга.
  • обрабатывая ввод пользователя и перенаправляя его на vtkRenderWindowInteractor для дальнейшей обработки

vtkRenderWindowInteractor - это класс, отвечающий за сопоставление событий ввода (мыши / клавиатуры / времени) пользователя с соответствующим действием. Внутри он использует vtkInteractorStyle для обеспечения различных vtkInteractorStyle отображения.

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();

Это блокирующий вызов, который возвращается только тогда, когда пользователь запрашивает quit (ключ q ) или закрывает окно. Запускает цикл сообщений и отправляет сообщения.

Запуск этого должен создать окно, которое выглядит так:

Привет, мир

Заметки

Этот список DLL, который использовался этим exe:

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow