今日の GP2X
なんかもうコーナー化してしまいそうな勢いだ。というかカテゴリ作っちまったし。
GP2X の SDL のソースコードを発見したので、「高速化(主に描画周り)」についてちょこっと調べてみた。ソースは以下。
LibSDL Hardware Sourcecode http://www.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,46,1241
んで、読んでみて解った感じな事。
実際に以上の事を踏まえて、
videoFlags = SDL_SWSURFACE;
primary = SDL_SetVideoMode(width, height, 8, videoFlags);
としていたビデオ周りの初期化を、
videoFlags = SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF|SDL_HWPALETTE;
primary = SDL_SetVideoMode(width, height, 8, videoFlags);
こうしてみた。結果、驚くほどの速度向上が。作成初期の段階(背景描画して敵8体ほど出して自機が出てショットが撃てる)なのであまり参考にはならんが(全くだ)、6倍ほど速くなった。具体的に書くと「6ms」が「1ms」になった。
「FULLSCREEN」に関しては完全に盲点だった。GP2X は Window モードだろうが FULLSCREEN だろうが出る絵は一緒で、ぱっと見「FULLSCREEN」で動いてくれる。しかも通常は「ウェイト」を入れてフレームレートを一定にしてるので、速くなってるのに気がつかなかった。最近は FULLSCREEN で作る事も無かったのでよりいっそう気がつかなかったというか、試しても無かった(PC でもそんなに恩恵があるようには思わなかったしね...)。
「VRAM が 5M 存在した」というのは、ヘッダファイルの下記の記述を見たからだ。実際は 8M あるらしい。
// Allocate 8MB for the frame buffer (seems to be how gph have it) #define GP2X_VIDEO_MEM_SIZE 5*1024*1024
この情報どこかにあったっけ...?見たことない気がするけど、単に気がつかなかっただけかなあ...?