DXライブラリとLive2Dを用いてwindows向けアプリの作成を行っている者です。
質問というよりかは不具合報告になってしまうのですが、Live2D周りで見つけたので報告致します。
Live2D_Model_SetParameterValue()を実行したモデルに対してLive2D_Model_StartMotion()やLive2D_Model_Update()を行い続けると、動作が重くなってしまうようです。
自分が作成しているプログラムで、同じモデルを表示し続けて10分ほど放置していたらFPSが激減していました。
かなり雑ですが、切り分けで調べていた時のコードを添付致します。
int ModelHandle = Live2D_LoadModel( "CubismSdkForNative-5-r.4\\Samples\\Resources\\Hiyori\\Hiyori.model3.json" );
int LastTime = GetNowCount();
SetDrawScreen( DX_SCREEN_BACK );
while( ProcessMessage() == 0 )
{
ClearDrawScreen() ;
// if( Live2D_Model_IsMotionFinished( ModelHandle ) == TRUE )
// {
Live2D_Model_StartMotion( ModelHandle, "Idle", GetRand( 8 ) ) ;
// }
for ( int i = 0; i < 100; i++ )
Live2D_Model_Update( ModelHandle, 0 );
Live2D_Model_Update( ModelHandle, 1 / 60.0f ) ;
// 呼吸設定
Live2D_Model_SetParameterValue( ModelHandle, _T("ParamBreath"), 1.0 );
// まばたき値設定
Live2D_Model_SetParameterValue( ModelHandle, _T("ParamEyeLOpen"), 1.0 );
Live2D_Model_SetParameterValue( ModelHandle, _T("ParamEyeROpen"), 1.0 );
for ( int i = 0; i < 100; i++ )
Live2D_Model_Update( ModelHandle, 0 );
// Live2D描画の開始
Live2D_RenderBegin() ;
// モデルの描画
Live2D_Model_Draw( ModelHandle ) ;
// Live2D描画の終了
Live2D_RenderEnd();
int CurrentTime = GetNowCount();
DrawFormatString( 10, 10, GetColor( 255, 255, 255 ), "TIME: %4d", ( CurrentTime - LastTime ) );
LastTime = CurrentTime;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}