kowさんは天ざる大好き

創作に絶望すると、世界が反転した日記

OpenGLの越えられない壁

簡易実験として、描画のパフォーマンスを測定してみた。
ほんとに、片手間でテストしたので、実際の数値は記載していない。
glFlushでパイプラインを通して、バッファをスワップするの処理時間である。
動作画面は16bitの640*480である。


マシンは
PenⅢ650E + 640MB + TNT2 Proである。

OpenGLオプションで、アルファチャンネルをオンの状態で測定してみる。
640*480の画像を描画することを想定した。
内部的にはこの画像は1024*512の画像でストアされている(だろう)。
たとえば、この画像を640*480の画像を10回、流し込んで、パイプラインを通すと、
だいたい 60ms の処理時間を要する。
glFlushはなんも描画しなくともしないでも、呼び出すだけで4msぐらいかかる。
ここで、640*480の画像を1回だけ描画してみる。
処理時間は9〜10ms。


まず、思いだそう。
去人の想定FPSは60であった。
一フレームの描画にかけられる時間は、1000 / 60 ≒ 16.6msである。
このPCの環境では、背景一枚と、キャラクタをベタで描画したら、フレーム落ちが発生するだろう。
ここで、FPSを30に落とした。
一フレームの処理の許容時間は 33.3ms となる。
およそ、背景を5枚ほど描画してもOKである。
たとえば、背景、キャラクタ3体、文字、ボタン等をコミコミで描画してもいけそうである。
ただし、これを全部描画すると、CPUパワーをほとんどとられるので、モーフィング演算などやっている場合ではない。
まあ、そんなおとしないし、こんなゲームで計算もなにもない。
だからおっけーということにする。

ちなみに、OpenGLでブレンドをオフにすると、パイプライン処理は10%強は向上するようだ。
透過処理が動的におこなわれないところでは、ライスタライズしてjpgにしたら、スピードは向上しそうだ。


ということで、簡易実験の結果、650MHz + TNT2 でなんとか動かせるみたいや、という結論だ。
つうか、大昔のマシンでも、リアルタイムで3D描画できていたということだしなあ。
まったくもってけしからんなあ<わたしが