수색…


Hello World 예제

#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 디자인은 팩토리 메서드 디자인 패턴을 사용하여 <ClassName>::New() 메서드를 사용하여 vtkObject 파생 클래스의 새 인스턴스를 만듭니다. 이를 통해 런타임 중에 필요한 인터페이스를 충족시키기 위해 플랫폼 특정 구현을 선택할 수 있습니다.

이 메커니즘이 작동하려면 팩토리 클래스가 vtk 인프라에 의해 선택 될 수 있도록 스스로 "등록"해야합니다. 이 주제에 대한 자세한 내용은 여기를 참조하십시오 .

VTK_MODULE_INIT 자동 필요한 모듈 / 라이브러리 (들) (초기화하는 데 사용 된 매크로이다 vtkRenderingOpenGL2 , vtkRenderingFreeType , vtkInteractionStyle 이 예에서). 모듈을 초기화하지 않으면 <ClassName>::New() 호출로 인해 NULL 이 반환되고 런타임 오류가 반환 NULL .

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

vtkSmartPointer 역할은 vtkObject 파생 클래스 인스턴스의 수명을 제어하는 ​​참조 횟수를 관리한다는 점에서 std::unique_ptr 과 유사합니다.

vtkTextActor 는 문자열을 화면에 표시하는 데 사용할 수있는 간단한 클래스입니다.

vtkRenderer 는 장면의 내용을 관리하는 클래스입니다. 특히 그것은

vtkRenderWindow 는 플랫폼 독립적 인 인터페이스를 제공하는 클래스입니다.

vtkRenderWindowInteractor 는 사용자 입력 (마우스 / 키보드 / 타이밍) 이벤트를 해당 작업에 매핑하는 클래스입니다. 내부적으로는 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();

이것은 사용자가 종료 ( q 키)를 요청하거나 창을 닫을 때만 리턴되는 블로킹 호출입니다. 메시지 루프를 실행하고 메시지를 전달합니다.

이것을 실행하면 다음과 같은 창이 생성됩니다.

안녕하세요 세계

노트

이 exe에 의해 사용 된이 DLL 목록은 다음과 같습니다.

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