sfml ウィンドウ用のウィンドウ コンテナーを作成しようとしています。sfml に慣れていない場合、sfml ウィンドウはコピー不可のクラスであるため、たとえば std::vector 内に配置することはできません。
私はほとんどの作業を完了しましたが、window.Display() が呼び出されてウィンドウを更新する前に、open-gl 描画作業を行うある種のコールバック関数を実装しようとしています。
コールバック関数 (c または c++ バージョン) の構文について理解できません。誰かが私に例を説明してくれませんか?
さらに良いことに、関数 (ユーザーが定義する) をクラスの関数に渡すことができるように、クラスにコールバック関数を実装する方法の例を誰かが喜んで説明してくれますか?後でクラスから呼び出すことができます。
上記の文をより明確にするために、次の 3 つのことが必要だと思います。
1): ユーザーが定義する関数。例:
void doDrawing(){
// do some open gl stuff
}
2:) 上記のユーザー定義関数の引数を取るクラス内の関数:
void setDisplayFunc( ?argument of a function? argument ){
function_pointer pointer = argument;
}
「引数」のタイプがどうあるべきか、または「function_pointer」がどうあるべきかわかりません...これが私が最も行き詰まっているところだと思います!
3:) 上記で割り当てられた関数をクラスが呼び出す方法。
// Do the function which is pointed at by pointer, which is of the type 'function_pointer' ... Whatever function_pointer happens to be!
誰かが以前に glut を使用したことがある場合、次のような glut コールバック関数を実装しようとしていると思います。
void someDisplayFunction(){
// do open gl stuff
}
glutDisplayFunc( someDisplayFunction );
上記の関数は、ユーザー定義関数の引数を取り、'glutPostRedisplay' を呼び出したときに実行します ...
これが理にかなっていることを願っています。できる限り多くの情報を含めようとしました。どんな助けでも大歓迎です。(: