vtk
안녕하세요 세계
수색…
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
는 장면의 내용을 관리하는 클래스입니다. 특히 그것은
-
vtkActor2D
에서 파생 된 2D 배우 -
vtkProp3D
에서 파생 된 3D 액터 - 볼륨 :
vtkVolume
- 카메라 :
vtkCamera
- 조명 :
vtkLight
vtkRenderWindow
는 플랫폼 독립적 인 인터페이스를 제공하는 클래스입니다.
- 렌더러 컬렉션 관리.
- 사용자 입력을 처리하고 추가 처리를 위해
vtkRenderWindowInteractor
로 전달
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