読者です 読者をやめる 読者になる 読者になる

glDrawPixels() 3

OpenGL C++

結局,
60FPS で 1フレーム1回 144 x 480 のエリアの glDrawPixels() を
glDisable(GL_LIGHTING)/glDisable(GL_DEPTHTEST) で実行してみたのですが,


おせぇぇぇぇッ ヽ(`Д´)ノ


というか,ちょっと分からん.
試験環境は,SDLOpenGL で,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" って書いてあるから,
敬遠してたんだけど...


うーん...