6

SDL を使用してアプリケーションのジョイスティック サポートを取得しようとして、時間を失ってしまいました。

SDL_Init(SDL_INIT_JOYSTICK|SDL_INIT_VIDEO);
SDL_JoystickEventState(SDL_ENABLE);

ジョイスティックを初期化しただけではうまくいかず、ビデオと一緒に行う必要がありました。これを非常に最小限にしたいので、ジョイスティックだけを初期化する方法があるかどうかを知っておくとよいでしょう. そうでない場合、ビデオを初期化して使用しないことの欠点があるかどうか誰か教えてもらえますか?

ここでは Ubuntu を使用していますが、さまざまなプラットフォームで動作することを期待しています。この動作は環境によって異なりますか?

ありがとう :)

4

2 に答える 2

7

ジョイパッド入力を使用する小さな CLI アプリを開発する際にも、同様の問題がありました。基本的に、少なくとも Linux (X11) では、SDL のイベント システムはビデオ ドライバに由来するため、SDL_INIT_VIDEO なしでは機能しませんでした。

ウィンドウを作成せずにビデオを初期化してもまったく問題ありません (少なくとも機能します)。Win32 と Linux の両方でこのアプローチをテストしたので、マルチプラットフォームでも問題なく動作するようです。

于 2011-02-03T22:50:17.790 に答える
5

同様の問題があり、イベントループを使用しないことで解決しました。代わりに、ジョイスティックを手動で更新してから、SDL 関数を使用してジョイスティックをチェックします。

SDL_Init(SDL_INIT_JOYSTICK);
SDL_JoystickEventState(SDL_DISABLE);
joystick = SDL_JoystickOpen(0);
SDL_Joystick* joystick;
while(true)
{
    SDL_JoystickUpdate();
    SDL_JoystickGetAxis(joystick, 0);
}
于 2014-02-05T03:42:07.030 に答える