マルチスレッド

概要

Effekseerは現在(0.5)、「Effekseer::Manager::Update」のみ、別スレッドで実行できるようになっています。更新しつつ、エフェクトの生成、エフェクトの移動等ができるようになっています。

フリップ

サンプルは「RuntimeSample/Multithread.sln」です。

マルチスレッドに対応させるにはフリップを手動で行う必要があります。まず、「::Effekseer::Manager::Create」の引数のautoFlipにfalseをしています。本来だったら内部で行なっていたフリップを手動で行うようになります。

「Effekseer::Manager::Update」の前に「Effekseer::Manager::Flip」を実行します。この関数を実行した時点に存在するエフェクトが更新及び描画の対象になります。その後、「Effekseer::Manager::Update」を別スレッドで実行することができます。


// エフェクト管理用インスタンスの生成(自動フリップは行わない)
g_manager = ::Effekseer::Manager::Create( 2000, false );

// フリップを行う
g_manager->Flip();

// 別スレッドで「Effekseer::Manager::Update」を実行開始

// エフェクト生成等

// 「Effekseer::Manager::Update」の終了を待つ

// 描画