東方とかだと描画間隔の変更ができるようなんですが
この場合の「描画間隔」とはどういう意味なんでしょうか?
私が思い付くのは移動処理などの関数と描画処理の関数に別れていて
通常は両方とも毎フレーム実行するけど、描画間隔を2分の1とか3分の1にすると
描画関数と画面更新とFPS処理(ゲームプログラミングの館fps,wait_fanc関数など)の方は
2周に1回とか3周に1回だけ実行する事ですが
毎フレーム、ウェイトをかけないと実行速度が上がってしまうし
ゲームプログラミングの館のコードを使用させていただいてるので
FPSも実行しないとうまく動かないんですよね・・
描画はしていないけど描画回数にはカウントした方が良いのでしょうか・・?
描画間隔について
Re:描画間隔について
管理人さんのサンプルを見てませんので、私なりの回答になりますが
以下のソースのようなことではないでしょうか?
以下のソースのようなことではないでしょうか?
#include <stdio.h> void hoge(int i) { static bool b = true; if( b ) printf( "%d\n", i ); if( b ) b = false; else b = true; } void main() { int i; for( i=0; i<10; i++ ) hoge(i); }
Re:描画間隔について
見たところ呼ばれるたびに実効、非実行が切り替わる見たいですね
う~んちょっと違いますね・・
具体的に言うと描画間隔を2分の1にした時に実行頻度を2分の1にしなくてはいけない処理は何かって事です
とりあえず描画処理と画面更新は2分の1にしないといけないと思うんですが
他にも2分の1にしなくてはいけない処理があるかどうかがよくわからないんです・・
う~んちょっと違いますね・・
具体的に言うと描画間隔を2分の1にした時に実行頻度を2分の1にしなくてはいけない処理は何かって事です
とりあえず描画処理と画面更新は2分の1にしないといけないと思うんですが
他にも2分の1にしなくてはいけない処理があるかどうかがよくわからないんです・・
Re:描画間隔について
if( Time % 2 == 0 ) { DrawFlg = true; ClearDrawScreen(); } else { DrawFlg = false; } // 計算処理処理 // 画面へ反映 ScreenFlip();でいいんだと思うんだけど。
偶数フレームの時に描画して、奇数フレームの時は偶数フレームの表示に対してクリアもしないし描画もしない。
処理終了と共にディスプレイに偶数フレームの時と同じ画面を出力する。
こうすると描画は30FPS、処理は60FPSになる。
DrawFlgってのは各描画関数の頭でこのフラグが立って居たら関数を抜けるようにするためのフラグという認識で。
Re:描画間隔について
> と言う事は描画処理と画面クリア処理だけをスキップすれば良いんでしょうか?
基本それで問題ないと思います。
ただ、スキップするということは、一切処理をしないということなので、
スキップする箇所(描画処理)に移動処理に影響する処理(乱数生成やカウンタなど)を入れると、
スキップした時としない時とで動作が変わってしまうので気をつけてください。
(普通は描画処理にそのようなコードは入らないので余り気にする点ではないかもしれませんが)
基本それで問題ないと思います。
ただ、スキップするということは、一切処理をしないということなので、
スキップする箇所(描画処理)に移動処理に影響する処理(乱数生成やカウンタなど)を入れると、
スキップした時としない時とで動作が変わってしまうので気をつけてください。
(普通は描画処理にそのようなコードは入らないので余り気にする点ではないかもしれませんが)