流体力学コードの結果を視覚化するためのいくつかの OpenGL/Glut 関数を作成しています (すべて C++ で)。私のデータは、グローバルとして宣言されたマトリックスに格納されています。
疑似コードは次のとおりです。
class fluid_dynamics{
//...
void set_conditions(); // Here is my opengl init function
void solve(); // This is an iterative loop with stop criteria
void IterateLoop();
}
solve() 関数にはループがあります。
void fluid_dynamics::solve(){
glutDisplayFunc(DisplayMatrix);
IterateLoop( // here I update my data each n-steps
// and I want to update my "scene" every time I do that.
);
glutMainLoop();
私は OpenGL にはまったく慣れていませんが、IterateLoop() 関数内で glutPostRedisplay() を使用すると、ループが終了するまで新しいイメージが実行されないことを理解している限り (glutPostRedisplay() はフラグを設定してアイドル状態になるまで待機するため)、だから...何かアイデアはありますか?(1)
glutIdleFunc を使用することは可能ですか? または、ループを小さなものに分割する IterateLoop を指す glutTimerFunc ですか? (その場合、クラス内からクラスメンバーに void ポインターを渡す方法は?:S)
ノート; コードを書き直すこともできるので、すべての提案を受け入れますが、すべての流体力学操作をクラス内に置くことが重要だと思います。