glDrawPixels() 3
結局,
60FPS で 1フレーム1回 144 x 480 のエリアの glDrawPixels() を
glDisable(GL_LIGHTING)/glDisable(GL_DEPTHTEST) で実行してみたのですが,
おせぇぇぇぇッ ヽ(`Д´)ノ
というか,ちょっと分からん.
試験環境は,SDL+OpenGL で,OSはWindows.
1.MPenIII 750MHz + OnBoardGB 2.PenIII 700MHz + GeForce256 3.PenIV 2.8GHz + RADEONX300(SE?)
の三機種.
Windowモードでは,一応問題無く動作する(ただし遅い)っぽいが,
FullScreenモードにするとボロボロで,マトモに表示されない.
以下,FullScreenモードでの実行結果
1. 今回の試験環境の中では,一番普通に動作. id:keim_at_Si:20050120 の GL_BGR_EXT も正常に動作. ただし,256 x 512 のテクスチャを等倍で描画した方が高速. 2. 体感時間にして70%位は真っ暗.時々チラッと画面が描画される. ほとんど見えない. 3. 1秒に一回位,0.1秒位固まる.「ガッ,ガッ,ガッ(1秒間隔)」 と止まる感じ.キー入力すると少し間隔が狭まるようにも感じるけど, 気のせいかも.
やっぱりバスの太さのせいかなんかだろうか?
OnBoardGB は,グラフィックメモリがシステムと共有なので,転送が良好?
FullScreenモードとの相性ってあたりからすると,SDL の実装と関係?
そうなると,3でBoardを切ってみるとか,wgl*() でコーディングとか
glCopyPixels() とか,色々やってみたくなるけど,ま,深く調べる前に,
「ゲームで glDrawPixels() は危険」
って結論で十分かも.
ただ,1pixel = 1texel なのに,
わざわざテクスチャで描画ってのは,かなり抵抗があるなぁ.
SDL_Surface(SDL_OPENGLBLIT) を使って Blit できるのか?
でも http://sdldoc.csn.ul.ie/sdlsetvideomode.php には,
"Not Reccomended for New Code" って書いてあるから,
敬遠してたんだけど...
うーん...