# 実行

## 概要

ここでは、どのようにしてエフェクトを表示するかを説明します。

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();