フルスクリーン時のFPS確認

 2011-11-03
現在のFPSを取得および画面上に表示する機能を追加します。

FPS ウィンドウ FPS フルスクリーン

FPS取得機能の定義
Graphics.fps .. FPS の取得。失敗した場合は nil
Graphics.show_fps .. FPS の表示。処理的には F2 を押します。
unless $!
GetForegroundWindow = Win32API.new('user32', 'GetForegroundWindow', 'v', 'l')
GetWindowText = Win32API.new('user32', 'GetWindowTextA', 'lpi', 'i')
KeybdEvent = Win32API.new('user32', 'keybd_event', 'iill', 'v')

GAME_HANDLE = GetForegroundWindow.call
end

class << Graphics
#--------------------------------------------------------------------------
# ● FPS の取得
# return : FPS の取得に成功した場合は、その値を数値で返す。
# 失敗した場合は、nil を返す。
#--------------------------------------------------------------------------
def fps
buffer = "\0" * 256
::GetWindowText.call(::GAME_HANDLE, buffer, 256)
fps = NKF.nkf("-w", buffer.delete("\0"))[/ (\d+) FPS\z/, 1]
return (fps ? Integer(fps) : nil)
end
#--------------------------------------------------------------------------
# ● FPS の表示
# return : FPS が既に表示されている場合は、その値を数値で返す。
# 表示されていなければ nil を返す。
#--------------------------------------------------------------------------
def show_fps
fps = Graphics.fps
return fps if fps
::KeybdEvent.call(0x71, 0, 0, 0)
::KeybdEvent.call(0x71, 0, 2, 0)
Graphics.update
return nil
end
end


使用例:画面上にFPSを表示します。
class Scene_Base
FPS_BGCOLOR = Color.new(0, 0, 0, 128)
#--------------------------------------------------------------------------
# ○ 開始処理
#--------------------------------------------------------------------------
alias _cao_fps_start start
def start
_cao_fps_start
create_fps
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
alias _cao_fps_update update
def update
_cao_fps_update
update_fps
end
#--------------------------------------------------------------------------
# ○ 終了処理
#--------------------------------------------------------------------------
alias _cao_fps_terminate terminate
def terminate
_cao_fps_terminate
dispose_fps
end
#--------------------------------------------------------------------------
# ● FPS の作成
#--------------------------------------------------------------------------
def create_fps
@fps = Sprite.new
@fps.bitmap = Bitmap.new(32, 32)
@fps.bitmap.font.size = 24
@fps.z = 9999
update_fps(true)
end
#--------------------------------------------------------------------------
# ● FPS の解放
#--------------------------------------------------------------------------
def dispose_fps
@fps.bitmap.dispose
@fps.dispose
end
#--------------------------------------------------------------------------
# ● FPS の更新
#--------------------------------------------------------------------------
def update_fps(need_refresh = false)
return if !need_refresh && Graphics.frame_count % Graphics.frame_rate != 0
#~ @fps.bitmap.clear
@fps.bitmap.fill_rect(@fps.bitmap.rect, FPS_BGCOLOR)
fps = Graphics.show_fps
@fps.bitmap.draw_text(0, 0, 32, 32, fps || "-", 1)
@fps.update
end
end
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

cacaoさんありがとうございます!!

メニューバーのFPSと見事にリンクしていて
素晴らしいです。やっぱりフルスクリーンでは
FPSが10ほど下がっていました。貴重なスクリプトを
作って下さって、本当にありがとうございました^^
【2011/11/03 19:25】 | ruru | [編集]
トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/594-a846034d
≪ トップページへこのページの先頭へ  ≫
カレンダー
06 << 2017/07 >> 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

カテゴリー
最近の記事
最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク