atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
frostar@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
frostar@wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
frostar@wiki
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • frostar@wiki
  • FPS管理

frostar@wiki

FPS管理

最終更新:2011年11月09日 08:48

frostar

- view
管理者のみ編集可
fpsとは
frame per second(1秒間のフレーム数)のこと。
もっと簡単にいうと、1秒間に何枚の画像を表示しているかということ。
1秒間に画像を少しずつ動かして表示することにより、動画のように見えるので、動画のなめらかさとも直結する。
もちろんfpsが大きいほどなめらかになるが、描画処理というのは時間がかかるもので、徒に大きくしすぎても無駄になる。
だいたい、ゲームだとfps60(1秒間に60回描画)位が普通っぽい。
fpsとは
実際にfpsをどう管理するか。
windowsのAPIにはTimerというものがあり、それを使う方法もあるが、精度が低いため、あまり向かない。
基本的には、マルチスレッド化して、そこでの無限ループで、fpsの管理と描画をすることになると思う。
実装
描画用スレッドの中身の概要。
DWORD ts=timeGetTime();//時間変数
DWORD te=ts;
int count=0;//描画回数
double f = 1000.0/60;//1フレームの時間(1000.0/fps。この場合はfps60の場合)
timeBeginPeriod(1);//timeGetTimeの精度変更
while(TRUE){
	te = timeGetTime();
	if((te-ts)>=f*count){//フレーム処理
		//更新処理
		if(!((te-ts)>=((count+1)*f))){//フレームスキップ処理
			//描画処理
		}
		count++;
	}
	if((te-ts)>=1000){
		//1秒ごとにtsとcountの初期化
		//(FPS描画)
		ts = timeGetTime();
		count=0;
	}
	Sleep(1);
}
timeEndPeriod(1);//timeGetTimeの精度を元に戻す
関数説明
timeGetTime、timeBeginPeriod、timeEndPeriodについては時間計測のページを参照
処理説明
まず、最初の4行で使用する変数の定義と初期化を行い、whileループの中に入る。
また、timeBeginPeriod(1)として、タイマ精度を1msに変更する(精度が低くても問題ないのであれば変更しなくてもよい)。
timeBeginPeriodを使用すると、他のアプリケーションのタイマにも影響を及ぼすらしいので注意。
特に使わなくなった時にはtimeEndPeriodを確実に呼ぶこと(引数はBeginと同じ)
whileループの最初では、変数teに現在の時間を入れる。
次の条件分では(te-ts)>=f*countを条件として、フレームの処理に入る。
te-tsは開始時と現在の時間で、それがf*count、つまりフレーム処理予定の時間よりも大きいときはフレーム処理を行う。
フレーム処理では、画面の更新処理と画面の描画処理を行う。
描画処理、フレームスキップについては後述。
(te-ts)>=1000、つまり1000ms(1秒)経過するごとにtsの値の更新とcountの初期化を行う。
ここで、初期化する前のcountの値はそのままFPSとなっている(厳密にいえばcount/(te-ts)なんだろうが)。
そして、処理が終わったら1msのSleepをかける。
描画処理とフレームスキップ
描画処理は、処理内容によってはその処理だけで1フレームの時間をオーバーし、次の更新タイミングを超える場合がある。
そのような場合には、描画処理を飛ばすことにより、フレームの整合性を保つ。
これをフレームスキップという。
描画処理を飛ばしても、更新処理は行われるため、アニメーション自体の整合性も保たれるのである。
フレームスキップを行う条件は!((te-ts)>=((count+1)*f))となっている。
(count+1)*fは、次の更新タイミングであり、現在の時間が次の更新タイミングよりもオーバーしていないときに描画処理を行う。
つまり、オーバーしているときは描画は行われないため、フレームスキップとなる。
「FPS管理」をウィキ内検索
LINE
シェア
Tweet

[Amazon商品]


frostar@wiki
記事メニュー

メニュー

  • トップページ
  • プロフィール
  • コメント
    • 足跡
    • ツール
    • その他
  • 公開・更新状況について
作ったもの
  • 注意事項
  • TRPG支援ツール
    • SW2.0
      • キャラ管理ツールver2
      • 表出力ツール
      • 抽出ツール
    • でたとこサーガ
      • でたとこツール
    • 永い後日談のネクロニカ
      • キャラ管理ツール
    • その他
      • 2次元戦闘管理ツール
  • LimeChat2用マクロ
    • インストール・設定
    • 直線距離管理ツール
      • Reference
    • HPMPツール
      • Reference
    • 汎用ランダム出力ツール
      • Reference
    • 汎用デッキツール
      • Reference
  • ライブラリ
    • C++
      • ListViewEx

過去の遺物
  • ソフトの配布について
  • お手伝いについて
  • SW2.0
    • キャラ管理ツール
      • FAQ
    • GMツール
    • モンスターツール
  • DX3rd
    • キャラ管理ツール
  • 迷宮キングダム
    • キャラ管理ツール
    • まよきんダイス
  • それ以外
    • ADVスクリプタ
  • 作りたいもの
TRPG
  • コラム
    • コラムについて
    • TRPGとは
    • オンラインセッションについて
    • GM向け
      • GMを始める前に
      • シナリオの作り方
      • マスタリング
  • システム紹介
    • SW2.0
      • 基本ルールブック
      • データ系サプリメント
      • データ系サプリメント2
      • プレイヤーズハンドブック
      • シナリオ系サプリメント
      • ツアー系サプリメント
  • データ
    • SW2.0
      • モンスターデータ
プログラム
  • プログラムを始める人へ
  • プログラムメモ
    • データ構造
      • リスト構造
    • 時間計測
    • FPS管理
    • 数学関数
    • 文字列操作関数
      • strrep
    • 描画関数
      • TransparentAlphaBlt
      • RotateBlt
      • RotateTransparentAlphaBlt
      • 描画関数の時間比較
    • 知っておくと便利
    • コントロール
      • 色を変える
      • チェックボックス付きリストビュー
    • C++標準ライブラリ系
      • StringSplit
      • AccessIterator
      • Java風Iterator
    • winsock系
      • WebSocketサーバ
    • JavaScript系
      • JSONPででたとこのデータ取得
  • CodeIQ
    • 結城浩さんの問題
      • Bits
      • Nick
      • Scissors
    • Paiza Online Hackathon
      • 新人女子の書いたコードを直すやつ
リンク

自分関係

  • リンクについて
ここのページへのリンクについてはこちら
  • ブログ:幾星霜
TRPGのセッション記録とかメインのブログ
  • USTREAM:frostのプログラム雑談室
生配信チャンネル。プログラム<雑談
気が向いたときにやります
  • THE INTERVIEWS
個人的な質問に答えてます。

TRPG系

  • 月光華亭
お世話になっているオンラインセッションサイト
  • TRPG.NET
TRPGのことならここ!
IRCサーバなど、お世話になってます。
  • 屍少女たちの永い午睡(相互)
ネクロニカの支援サイトです。ツール開発やオンセもやっています。

プログラム系

  • 猫でもわかるプログラミング
初心者のためのプログラムのページ。WindowsSDKの方についても詳しく書いています。
  • 窓プログラミング
windowsSDKのテクニックがいろいろ書いてあります。
  • C/C++リファレンス
C++STL(標準テンプレートライブラリ)の日本語版リファレンスです。

@frost_star からのツイート

更新履歴

取得中です。


ここを編集
記事メニュー2
人気記事ランキング
  1. 色を変える
  2. モンスターツール
もっと見る
最近更新されたページ
  • 2076日前

    足跡
  • 3812日前

    JSONPででたとこのデータ取得
  • 3812日前

    メニュー
  • 3817日前

    でたとこサーガ支援ツール
  • 3817日前

    表出力ツール
  • 3818日前

    直線距離管理ツール
  • 3825日前

    直線距離管理ツール:Reference
  • 3825日前

    SW2.0キャラ管理ツールver2
  • 3904日前

    汎用ランダム出力ツール:Reference
  • 3904日前

    汎用デッキツール
もっと見る
人気記事ランキング
  1. 色を変える
  2. モンスターツール
もっと見る
最近更新されたページ
  • 2076日前

    足跡
  • 3812日前

    JSONPででたとこのデータ取得
  • 3812日前

    メニュー
  • 3817日前

    でたとこサーガ支援ツール
  • 3817日前

    表出力ツール
  • 3818日前

    直線距離管理ツール
  • 3825日前

    直線距離管理ツール:Reference
  • 3825日前

    SW2.0キャラ管理ツールver2
  • 3904日前

    汎用ランダム出力ツール:Reference
  • 3904日前

    汎用デッキツール
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. キ/ュ/ン/妻まとめwiki
  2. 第2次スーパーロボット大戦OG&ダークプリズン 攻略まとめ @ウィキ
  3. アサルトリリィ wiki
  4. デジモンワールド @ Wiki
  5. ドラゴンクエストⅤ仲間キャラ2ch評価まとめウィキ
  6. 将棋ライク攻略@wiki
  7. モンスターファーム2@まとめwiki
  8. 大航海時代シリーズ攻略wiki
  9. SDガンダム ジージェネレーションジェネシス 攻略Wiki
  10. オバマス検証@wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. モンスター烈伝オレカバトル2@wiki
  4. ゲームカタログ@Wiki ~名作からクソゲーまで~
  5. 初音ミク Wiki
  6. 検索してはいけない言葉 @ ウィキ
  7. 発車メロディーwiki
  8. オレカバトル アプリ版 @ ウィキ
  9. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  10. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. まどドラ攻略wiki
  3. SurrounDead 攻略 (非公式wiki)
  4. シュガードール情報まとめウィキ
  5. ちいぽけ攻略
  6. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  7. Dark War Survival攻略
  8. 戦国ダイナスティ攻略@ウィキ
  9. 杖と剣の伝説
  10. 魔法少女ノ魔女裁判 攻略・考察Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 雷堂 ましろ - ストグラ まとめ @ウィキ
  3. キャプテン わきを - ストグラ まとめ @ウィキ
  4. 無馬 かな - ストグラ まとめ @ウィキ
  5. ももみ マルフォイ - ストグラ まとめ @ウィキ
  6. きらりんぶい☆ なずぴ(10) - ストグラ まとめ @ウィキ
  7. 868 - ストグラ まとめ @ウィキ
  8. モンスター一覧_第3章 - モンスター烈伝オレカバトル2@wiki
  9. ロスサントス警察 - ストグラ まとめ @ウィキ
  10. Back Alley - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.