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.