実行
概要
ここでは、どのようにしてエフェクトを表示するかを説明します。
DirectX9のサンプル(VisualC++2010)「RuntimeSample/DirectX9.sln」
初期化処理
描画管理クラスとエフェクト管理クラスのインスタンスの生成・初期化します。
DirectX、もしくはOpenGLの初期化を行った後に行う必要があります。
DirectX9の場合
// 描画管理インスタンスの生成
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererDX9::Renderer::Create( LPDIRECT3DDEVICE9, 最大表示スプライト数 );
// サウンド管理インスタンスの生成
::EffekseerSound::Sound* sound = ::EffekseerSound::Sound::Create( IXAudio2*, モノラル再生用ボイス数, ステレオ再生用ボイス数 );
// エフェクト管理用インスタンスの生成
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( 最大表示スプライト数 );
OpenGLの場合
// 描画管理インスタンスの生成
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererGL::Renderer::Create( 最大表示スプライト数 );
// エフェクト管理用インスタンスの生成
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( 最大表示スプライト数 );
※OpenAL,OpenSL ES等は現在未対応です。
設定
初期化の後、描画方法、データ読込方法、座標系等を設定します。
// 描画方法の指定、独自に拡張しない限り定形文です。
manager->SetSpriteRenderer( renderer->CreateSpriteRenderer() );
manager->SetRibbonRenderer( renderer->CreateRibbonRenderer() );
manager->SetRingRenderer( renderer->CreateRingRenderer() );
// テクスチャ画像の読込方法の指定(パッケージ等から読み込む場合拡張する必要があります。)
manager->SetTextureLoader( renderer->CreateTextureLoader() );
// サウンド再生用インスタンスの指定
manager->SetSoundPlayer( sound->CreateSoundPlayer() );
// サウンドデータの読込方法の指定(圧縮フォーマット、パッケージ等から読み込む場合拡張する必要があります。)
manager->SetSoundLoader( sound->CreateSoundLoader() );
// 座標系の指定(RHで右手系、LHで左手系)
manager->SetCoordinateSystem( Effekseer::CoordinateSystem::RH );
エフェクトの読込と再生
エフェクトをファイルから読み込みます。パッケージ等からファイルを読み込みたい場合、データ読込方法の指定にて読込方法を拡張する必要があります。
なお、読み込み時の文字コードはUTF16となっております。Windowsの場合はwchar_t、他OSの場合は、「::Effekseer::ConvertUtf8ToUtf16」を使用してUTF8からUTF16に変更して読みこむようお願いします。
// エフェクトの読込
Effekseer::Effect* effect = Effekseer::Effect::Create( manager, 読込先パス );
// エフェクトの再生
Effekseer::Handle handle = manager->Play( effect, 初期位置 );
更新処理
再生中のエフェクトのパラメーターを変更しつつ、更新を行います。
// 投影行列の更新
renderer->SetProjectionMatrix( ::Effekseer::Matrix44 );
// カメラ行列の更新
renderer->SetCameraMatrix( ::Effekseer::Matrix44 );
// 3Dサウンド用リスナー設定の更新
sound->SetListener( リスナー位置, 注目点, 上方向ベクトル );
// 再生中のエフェクトの移動等(::Effekseer::Manager経由で様々なパラメーターが設定できます。)
manager->AddLocation( handle, ::Effekseer::Vector3D );
// 全てのエフェクトの更新
manager->Update();
描画処理
描画を行います。DirectX9の場合、BeginSceneとEndSceneの間で実行してください。
renderer->BeginRendering();
manager->Draw();
renderer->EndRendering();
解放処理
解放処理を行います。DirextX、OpenGL自体を解放する前に行う必要があります。
// エフェクトを解放します。再生中の場合は、再生が終了した後、自動的に解放されます。
ES_SAFE_RELEASE( effect );
// エフェクト管理用インスタンスを破棄
manager->Destroy();
// サウンド用インスタンスを破棄
sound->Destroy();
// 描画用インスタンスを破棄
renderer->Destory();