C#2.0時代のゲームプログラミング(46) 〜 OpenGLは商用開発の夢を見ない?! (3)

で、まあ、「OpenGLだとテクスチャ作るときビデオメモリ無駄遣いすることになるよね」ってな話をしていると、必ず「NPOT使えば?」とか「TxRcは?」とか良く知りもせずに言ってきやがる奴が居るわけですよ。その都度同じ話を説明しないといけないから、いい加減うんざりで、ここに書いておくから、それ読みやがれってことで。


NPOTと言うのは、GL_ARB_texture_non_power_of_twoというOpenGL Extensionのことで、2の累乗というテクスチャサイズの制限を取っ払えるんです。OpenGL 2.0からは標準になってるのだけど、いまだに使えないビデオカードが目白押し。デスクトップ機向けのビデオカードでも現在1万円ぐらいで売られているやつではサポートされていなかったりしても全然おかしくない。


またNPOTはパフォーマンス上のペナルティもひどく、GeForce系ならばほとんど速度低下は無いのだけども、Radeon系では遅くて使い物にならない。だから、OpenGL 2.0対応を謳っているのにGL_ARB_texture_non_power_of_twoを返してこないRadeonビデオカードとかあるけど、そもそもRadeonビデオカードでNPOTを使おうということ自体が問題なので、使わなくて正解。


だいたいやね、NPOTをサポートしているようなビデオカードは256MBなり512MBなりビデオメモリを積んでいるので、別にビデオメモリの半分が無駄遣いであろうと痛くも痒くも無いのですよ。結局、NPOTを使わなくてはならないようなへたれビデオカードにはNPOTは対応していないのが問題。


NPOT自体が比較的最近のextensionだからで、もう少し古いextensionなら対応している可能性がある。それがTxRc(GL_ARB_texture_rectangleというextension)だ。


これはいくつかの制限*1があるのだけど、2Dのギャル絵を描画するのには関係ないので、使える状況ならばこれを使うのがヨロシイ。NPOTよりも対応しているビデオカードが多い(NPOTに対応していてTxRcに対応していないということはまずありえない)のと速度上のペナルティが少ないのが特徴。


ところが、私の使っているLet's Note(CF-W2)はTxRcにも対応しておらず。もー!ちょうど2年ぐらい前に出たばかりのときに23万で買ったんだけどな。(´ω`) 最近のLet's Noteなら945GMなのでTxRcには対応してます。(NPOTには対応してません。) とまあ、Intelのモバイルテクノロジだか何だか知らないけど、もうちょっとOpenGL対応に力を入れて欲しいところだ。


とまあ、20万前後のノートパソコンですらこんな状況なのでノートパソコンでのNPOTやTxRcの対応状況は結構サブイものがありまして…だから、そこでS3TCとFXT1はどうよ、という話になる。


(つづく)

*1:非正規化テクスチャ座標(1テクセル単位の値)、ミップマップ無し、テクスチャ座標のラップモードはクランプ系のみ。