OGRE3DのC#バインディングであるMOGREを使用しています。独自のレンダリングループを作成し、WindowEventUtilities.MessagePump()を使用してウィンドウを更新しました。
これが私のメインのアプリケーションループです。
while (SFMLWin.IsOpened() && !OGREWin.IsClosed)
{
try
{
if (fpsClock.Milliseconds > 0)
fps = 1000 / fpsClock.Milliseconds;
fpsClock.Reset();
SFMLWin.DispatchEvents();
SFMLWin.GetFrameTime();
inputKeyboard.Capture();
inputMouse.Capture();
OnCollision();
OnKeyHold();
MainDraw();
WindowEventUtilities.MessagePump();
}
catch
{
break;
}
}
SFMLWin.Dispose();
OGREWin.Dispose();
WindowEventUtilities.MessagePump();でOGREWinを閉じると、まだ「FatalExecutionError」コードが表示されます。try / catchステートメントは何もキャッチしません。また、状況を修正するためにWindowEventUtilities.MessagePump()の周りにifステートメントを実装することはできません。私は本当に何をすべきかについて困惑しています。
MOGREボードにトピックを投稿しましたが、まだ解決策が見つかりません。