(レンダリングには Ogre3D を使用しますが、質問は一般的なものにする必要があります。)
問題: ほとんどの 3D アプリケーションは、フレームのレンダリングとメッセージのチェックと処理を繰り返すサイクルを使用します。ただし、ダイアログ (MessageBox など) が開かれると、スレッドの実行がブロックされ、独自のメッセージ サイクルが実行されますが、明らかに 3D レンダリング関数は呼び出されません。
ダイアログが開いているときでも 3D シーンのレンダリングを維持するための推奨される、または「最良の」方法は何ですか? 通常のアプリケーションでは、再レンダリングは WM_PAINT メッセージなどによって処理され、モーダル ダイアログには内部メッセージ ループがあるため、必要に応じてウィンドウ プロシージャが呼び出され、すべてが正常に見えるため、この問題に悩まされることはありません。ただし、私の 3D プロジェクトでは、WM_PAINT メッセージがなくてもウィンドウを更新する必要があるため、「必要な場合」は常にです。
頭に浮かぶ簡単な解決策は、ダイアログが開いている時間のタイマーを登録し、WindowProc から 3D シーンをレンダリングすることですが、本当に最善でしょうか? とても汚れているようです...