[過去ログ]
SDLスレ ver.2.0 (814レス)
SDLスレ ver.2.0 http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
196: 名前は開発中のものです。 [sage] 2007/08/18(土) 23:57:30 ID:NM/B7TGH if( g_WindowActive ){ // ウィンドウがアクティブかどうか move(); draw(); } else { SDL_WaitEvent(&g_Event); } if(!PollEvent()){ // SDL_PollEventでイベント処理 break; } こんな感じでウィンドウがアクティブのときは動いて、 非アクティブのときは止まっているようにしたいんですけど、 ウィンドウが完全に見えている状態で非アクティブからアクティブになっても 止まったままなんです。 非アクティブのときにCPU使わないようにしようとWaitEvent入れたらこうなりました。 どうすれば対処できますか? http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/196
197: 名前は開発中のものです。 [sage] 2007/08/19(日) 01:32:06 ID:ddUge9Ur >>196 そもそもアクティブ/非アクティブの状態の取得をどうやってる? 完全に想像だから間違ってたらすまんが、SDL_APPACTIVEは最小化されてるorされてないしか判定しない。 フォーカスの有無ならSDL_APPINPUTFOCUS http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/197
198: 196 [sage] 2007/08/19(日) 16:58:00 ID:87LzenFa >>197 PollEvent()内で、このような処理をしています。(ほかのイベントは省略しています) while(SDL_PollEvent(&g_Event)){ switch(g_Event.type){ case SDL_ACTIVEEVENT: if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 0 ){ g_WindowActive = false; } if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 1 ){ g_WindowActive = true; } break; } } 最小化からの復帰と別ウィンドウからフォーカスが移って再描画されるときはまた動き出すのですが ウィンドウが完全に見えているときのフォーカスの変化に反応してくれないんです。 http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/198
199: 名前は開発中のものです。 [sage] 2007/08/19(日) 17:23:23 ID:39ZqT3vu >>196 SDL_WaitEvent() で拾ったイベントを捨ててるからだろ… http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/199
200: 196 [sage] 2007/08/19(日) 20:42:20 ID:87LzenFa SDL_WaitMessage()のあとにもイベント処理をはさむようにしたらうまくいきました。 どうもありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1141126812/200
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s