ページ

2013年10月27日日曜日

OpenRTMの初期化とonInitialize、onStartupの呼ばれるタイミング

OpenRTMとGLUTを組み合わせて、RTC::RangeDataの点群を表示するコンポーネントを作る過程でハマったポイントがあったのでメモしておきます。

まず、RTCコンポーネント側に受信データが到着した際の処理を注入しておき、ビューワの更新処理が呼ばれるようにしておきます。
次に、main関数内でRTC::Manager::runManagerを引数trueで呼び出し、そのあとにglutMainLoopが呼び出されるようにします。

この際、

  • activateManagerの後にRTCに対してリスナを登録
  • onInitializeの中にaddConnectorDataListenerでリスナをコネクタに登録
してしまっていたのですが、これではポートにデータが到着した際にうまく動かない問題がありました。
問題となったのは、activateManagerが呼ばれた際に、RTCのonInitializeはすでに呼ばれてしまっている点です。

RTCの起動時と終了時の挙動に関しては、このページに詳しい図が載っていました。
これによると、Managerの活性化時には
  1. ECの生成と起動
  2. onInitializeの実行
  3. NameServerへの登録
がなされるようです。

0 件のコメント:

コメントを投稿