スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)

フルスクリーン時の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
≪ トップページへこのページの先頭へ  ≫
カレンダー
04 << 2017/05 >> 06
- 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 - - -

カテゴリー
最近の記事
02/28 お返事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事

最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。