DirectXプログラミング講座 〜Vol12. FSPの計算〜

FPSとはFrame Per Secondの略で、一秒間に行う描画の回数を示します。この数値が高ければ高いほど滑らかにアニメーションを動かすことができますが、その反面ハードウェアに高度な処理能力が要求されます。一般的には60fpsが標準値であり、これは家庭用テレビゲームと同等の数値になります。


FPSを計算するサンプルプログラム

1秒間でRenderProcコールバック関数が何回呼び出されるかを計算することでFPSを算出するプログラムを作ってみます。ステップ8で作成したXファイルを表示するプログラムに手を加えていきますが、その他のプログラムにも変更無しで活用できます。

サンプルプロジェクトをダウンロード


画面左上に表示される数値がFPSを表す。この値は一秒間隔で更新される。

●testxfile.abpの先頭部分のコーディング

FPSを計算する際に必要な変数を定義します。dwFPS変数にFPSが格納されます。

#include "testxfile.idx"


Dim ScreenX=640 As Long    'ディスプレイの幅  (ピクセル単位)
Dim ScreenY=480 As Long    'ディスプレイの高さ(ピクセル単位)

' TODO: この位置にグローバル変数を定義してください。
Dim pModel As *CMeshModel

Dim dwFPS=30 As DWord
Dim temp_FPS=30 As DWord
Dim temp_Count As DWord

●RenderProc関数のコーディング

FPSを計算する際に必要な変数を定義します。dwFPS変数にFPSが格納されます。

Sub RenderProc()
    ' TODO: この位置に描画に関するコードを記述してください。

    Dim VectorPosition=[0,0,0] As D3DVECTOR

    Dim VectorDirection As D3DVECTOR
    VectorDirection.x=0
    VectorDirection.y=GetTickCount()/1000
    VectorDirection.z=0

    pModel->Draw(VarPtr(VectorPosition),VarPtr(VectorDirection))

    'FPSを計算
    temp_FPS=temp_FPS+1
    If GetTickCount()-temp_Count>1000 Then
        temp_Count=GetTickCount()

        dwFPS=temp_FPS
        temp_FPS=0
    End If

    'テキスト情報を描画
    Dim buf[255] As Char
    wsprintf(buf,"%dfps",dwFPS)
    dx_DrawText(10,10,buf,D3DCOLOR_XRGB(200,200,200))
End Sub


講座インデックスへ戻る ©2005 Discoversoft