サーチ…


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は、必要なモジュール/ライブラリ(この例ではvtkRenderingOpenGL2vtkRenderingFreeTypevtkInteractionStyle )を自動的に初期化するために使用されるマクロです。モジュールの初期化に失敗すると、 <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