FPS が上がらねぇ


やべーよ.マジやべー.
現在 10月31日.未だ卒業研究のテーマが決まらない!!
本気で卒業できんかもしれんにゃー.はっはっは.(開き直り)


そのくせ,DirectXを久しぶりにいじってみた今日この頃.

DirectX関係のBBSとか覗いてみると,ビデオメモリだとどうとかシステムメモリだとどうとかいう 投稿をよく目にする.
「そんな高度なこと,オラわかんねぇー」とあまり詳しく見ていなかった.
そして,「別に気にするほどでもないんじゃない?」とか思っていた.

んがッ!!!!
その 重荷は以外にも早く訪れた.
マジで遅いのだ.
ホントにしゃれにならん遅さだ.
はっきり言って「引く」ぐらい遅い.

むくくぅうう.
メモリが違うとこんなにまで変化があるのか・・・
「どうせちょっとの差でしょ?」とか思っていたワシが甘ちゃんだったのだ.


最初のテストは,256個の32×32のスプライトをBltを使って画面内にガンガン表示してみた.
このとき,バックサーフェスとスプライトサーフェスはビデオメモリに作っていた.
60FPSは余裕ででる.よっしゃー!

今度は調子にのって,そのまんまの条件で DDBLTFX_MIRRORLEFTRIGHT を使って水平方向に反転させてみた.
・・・
これが 超遅い!!!
びっくりした.
これがウワサの「ビデオメモリ」と「システムメモリ」の問題くわッ!!


はぁ・・・やっぱり実験しないといけないのかぁ.


以下は256個全て DDBLTFX_MIRRORLEFTRIGHT を使って水平方向に反転させて表示させたもの.


おっそー!! 5〜7FPSくらいしかでないぞー!!


おお! 速いぞ!! ちゃんと60FPSでてるじゃないか!!


ぎゃー!遅い!! これも 5〜7FPSくらいしかでない.
ソフト側で処理する必要がある場合はスプライトサーフェイスをビデオメモリにおいてはだめらしい...


中途半端に遅い!! 14〜17FPSくらいだ.なんで? 両方ともシステムメモリに置くと逆に遅いの?


というわけでこれをまとめると・・・
■DDBLTFX_MIRRORLEFTRIGHT使って水平反転■
バック:ビデオ バック:システム
スプライト:ビデオ 6 6
スプライト:システム 60 15

これだけを見れば,とりあえずスプライトだけシステムメモリに作っておけばOKな気がするんすけどねぇ,
反転させない場合,Bltさせると 50FPS くらいしか出ないのよね.これが.
反転とかさせない場合は,スプライトをビデオメモリに作っとけば高速なのね.(ToT)

う〜ん,まいったまいった.



< Back to Diary.