「OpenGL」でゲームをプログラミングし、「Gtkmm」をウィンドウマネージャーとして使用しています。カメラの移動にキーボードを使用したい(つまり、「UPキー」で前進、「DOWNキー」で後退など...)
しばらく前に、Java でプログラミングしたとき、この手法を使用して「移動」
しました。たとえば、アプリケーションが「UPキーを押して」信号を受信すると、その後、フラグ「shouldMoveForward」を「true」に設定し、後で「UP-key- release」信号を受信すると、フラグを「false」に戻します。
そして、「ゲームループ」はそのフラグを継続的にチェックし、それが真であればカメラを前方に動かし、そうでなければ何もしませんでした。
「Gtkmm」でも同じテクニックを使いたいと思います。したがって、 「Gtk::DrawingArea」のこれらの関数をオーバーライドしました。
bool Gtk::Widget::on_key_press_event(GdkEventKey* event)
bool Gtk::Widget::on_key_release_event(GdkEventKey* event)
しかし、問題は次のとおりです。たとえば、「UP」キーを押して 5 秒間押し続けると、次の一連の信号が発せられます。
press ...<little time waiting>... release press release press release press release .......... press release press release
「Linux で」ゲームを実行しているときに、前の状況が表示されます。
私が「Windows上」にいるとき、それは私が望むとおりです。
press ...<little time waiting>... press press press press press .......... press press release
したがって、これは Gtkmm でカメラを移動するための「移植性のない」ソリューションのようです。
Gtkmm をウィンドウ マネージャーとして使用してカメラの移動を実現する他の ( 「PORTABLE」 ) ソリューションはありますか?