« VirtualBoxでJavaプロセスがハングアップする件の対応策 | トップページ | 【JavaSE】フレームワークライブラリを更新 (2011/03/01) »

2011年2月16日 (水)

処理落ちしても一定のFPS制御

以前から公開しているJavaSE向けビデオゲームライブラリ(isle_shimakura.jar)ではフレーム落ちとかコマ落ちと呼ばれる現象を再現するFPS制御を実装しているのだが、DXライブラリとSDLライブラリ向けにも実装してみた。

ダウンロードはこちらから。

サンプルプログラムは58FPSで動作するようになっている。

  • カーソルキーで的が上下左右に移動する
  • ZキーでUFOが的に向けて弾を撃つ

そしてXキーを押すと1フレームの処理時間が20ミリ秒を超えるように待機処理が入る。

58FPSで動いている様子

58FPSでは1フレームあたり17ミリ秒ちょっとなので処理落ちする。

そのまま1フレームあたり20ミリ秒だと50FPSになってしまうところだが…。

29FPSで動いている様子

58FPSのタイミングを維持してコマ落ちするので29FPSとなる。

【2011/06/23 追記】

  • 裏画面を表画面にフリップするタイミングを間違えていたのを修正
  • DXライブラリ版のフレームワーク側で画面クリアしないように変更

【2011/11/21 追記】

  • Javaのフレームワークに倣ってVGCanvasのイベントメソッドを変更。実装はまだ
  • SDL版サンプルプログラムでSDL_ttfで作成したサーフェスの解放忘れを修正
  • SDL版サンプルプログラムでTTF_Quit()を呼び出してなかったのを修正

【2012/04/26 追記】

  • VSYNCタイミングのリセット機能追加。いまのところ外から使えないので実質的には変わりなし
  • 内部的な細かいコード変更
  • こっそりJava版も変更

|

« VirtualBoxでJavaプロセスがハングアップする件の対応策 | トップページ | 【JavaSE】フレームワークライブラリを更新 (2011/03/01) »

C/C++」カテゴリの記事

DXライブラリ」カテゴリの記事

SDL」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« VirtualBoxでJavaプロセスがハングアップする件の対応策 | トップページ | 【JavaSE】フレームワークライブラリを更新 (2011/03/01) »