■吉里吉里/KAG/TJS雑談質問スレ■その25
■ このスレッドは過去ログ倉庫に格納されています
0386名前は開発中のものです。
2012/03/05(月) 16:38:26.92ID:ogqGQR0A1. 吉里吉里本体がウインドウメッセージや内部処理からイベントを生成する
・ウインドウ/レイヤ系/サウンド系のイベントは即配信されてTJS実行
・タイマやトリガは指定の優先度で吉里吉里のイベントキューに積まれる
・プラグインからも TVPPostEvent でイベント登録可能
2. TJSイベント処理呼び出し開始タイミング
一連のウインドウメッセージの処理が終わったタイミングでアイドル処理としてTJSイベント配信処理が開始(Application->OnIdle 経由)
・contfreq=0 で continuous handler 動作中は強制でアイドル処理が呼ばれ続ける
・イベントキューにイベントがつまれた時はダミーのウインドウメッセージを発行するので必ず次のアイドル処理もおこる
・50msに一回、終了判定やガベージコレクト処理起動なども含めたイベント配信がある(TVPMainForm::SystemWatchTimerによる)
3. TJSイベント処理。処理入り口は TVPDeliverAllEvents()
(1)優先イベント>通常イベントの順でTJS呼び出し
(2)アイドル系処理
a. アイドルイベントのTJS呼び出し
b. フラグが立っていれば continuous handler のTJS呼び出し
c. ウインドウ画面更新イベントの処理(更新があった場合それを実画面に反映)
(1)用の優先イベントがある場合はそれが無くなるまで(中途で積まれた場合も)(2)のアイドル系処理はとばされて次の回送り
(2)b. の continuous handler は以下の場合に動作フラグが立ちます
・vsync 待ち有りならその直後
・vsync 待ち無しで contfreq=0 の時は毎回
・vsync 待ち無しで contfreq>0 なら指定fps相当のインターバル経過後
画面更新はアイドル処理時のみで描画処理用にタイミングをあわせるには、continuous handler か atmAtIdle なトリガが適切ということになります。
vsync 配慮するなら continuous handler のほうがちらつきにくいタイミングになります
レイヤのトランジション処理や KAG の Mover は continuous handler を使ってます
■ このスレッドは過去ログ倉庫に格納されています