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