Execution

Overview

We describe how to render effects.

A sample of DirectX9 (VisualC++2013)「RuntimeSample/DirectX9.sln」

A sample of DirectX11 (VisualC++2013)「RuntimeSample/DirectX11.sln」

Initialization

Instances of effect manager class and render manager class are created and initalized.
This procedure is required to execute after initializing DirectX or OpenGL.

In the case of DirectX9


// Create the instance of render manager
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererDX9::Renderer::Create( LPDIRECT3DDEVICE9, Maximum number of sprites );
// Create the instance of sound manager
::EffekseerSound::Sound* sound = ::EffekseerSound::Sound::Create( IXAudio2*, Number of voices for monaural playback, Number of voices for stereo playback );
// Create the instance of effect manager
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( Maximum number of sprites );

In the case of DirectX11


// Create the instance of render manager
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererDX11::Renderer::Create( ID3D11Device*, ID3D11DeviceContext*, Maximum number of sprites );
// Create the instance of sound manager
::EffekseerSound::Sound* sound = ::EffekseerSound::Sound::Create( IXAudio2*, Number of voices for monaural playback, Number of voices for stereo playback );
// Create the instance of effect manager
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( Maximum number of sprites );

In the case of OpenGL


// Create the instance of render manager
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererGL::Renderer::Create( Maximum number of sprites );
// Create the instance of effect manager
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( Maximum number of sprites );

OpenSL is currently unsupported.

Settings

Render method, loading method, coordinate system, etc are specified after initializing.


// Specify render method. You can extend these methods.
manager->SetSpriteRenderer( renderer->CreateSpriteRenderer() );
manager->SetRibbonRenderer( renderer->CreateRibbonRenderer() );
manager->SetRingRenderer( renderer->CreateRingRenderer() );
manager->SetTrackRenderer( renderer->CreateTrackRenderer() );
manager->SetModelRenderer( renderer->CreateModelRenderer() );

// Specify texture image loading method (Extended when loading from package etc.)
manager->SetTextureLoader( renderer->CreateTextureLoader() );

// Specify the instance for playing sounds
manager->SetSoundPlayer( sound->CreateSoundPlayer() );

// Specify sound loading method (Extended when loading from package etc.)
manager->SetSoundLoader( sound->CreateSoundLoader() );

// Specify coordinate system (RH-Right hand, LH-Left hand)
manager->SetCoordinateSystem( Effekseer::CoordinateSystem::RH );

Loading and playing effects

Loads an effect from a file. If you want to load a file from a package etc., you need to extend the loading method by specifying the data loading method.

The character code of a path is UTF16. wchar_t for Windows, For other OS, change from UTF 8 to UTF 16 using "::Effekseer::ConvertUtf8ToUtf16" For C ++ 11, char16_t can also be used.


// Load an effect
Effekseer::Effect* effect = Effekseer::Effect::Create( manager, source path );
// Play the effect
Effekseer::Handle handle = manager->Play( effect, initial position );

Updating

While updating the parameter of the effect being played, update it.


// Update a projection matrix
renderer->SetProjectionMatrix( ::Effekseer::Matrix44 );
// Update a camera matrix
renderer->SetCameraMatrix( ::Effekseer::Matrix44 );
// Update listener settings for 3D sound
sound->SetListener( position, focus, upper direction );
// Move or rotate effects(Many paramerters can be specified through ::Effekseer::Manager)
manager->AddLocation( handle, ::Effekseer::Vector3D );
// Update all effects
manager->Update();

Rendering

Effects are rendered. In the case of DirectX9, you need to execute it between BeginScene and EndScene.


renderer->BeginRendering();
manager->Draw();
renderer->EndRendering();

Terminating

We terminate Effekseer. You need to execute it before releasing DirectX or OpenGL.


// Dispose an effects. When the effect is playing, the effect is released automatically after playing.
ES_SAFE_RELEASE( effect );
// Dispose the instance of effect manager
manager->Destroy();
// Dispose the instance ofsound
sound->Destroy();
// Dispose the instance of render manager
renderer->Destory();