2012年4月25日水曜日

OpenGL ES テクスチャ設定 @iOS

OpenGL ES をちまちまといじっているわけですが、少し(かなり)はまった箇所があったので書いておきます。
参考:http://www.cocos2d-iphone.org/forum/topic/2319

現象:テクスチャを貼ったのに黒くしかならない。

対策1:
テクスチャの設定で以下のようにする。
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

これでも解決しましたが、第3引数に GL_REPEAT を指定したいときもあるよね、ということで米国の掲示板を探してみました。

対策2:
テクスチャに使用する元画像(自分の場合はPNG)のサイズを power of two にする。

power of two は日本語にすると「2のべき乗」。つまり、1, 2, 4, 8, 16, 32, 64,…といった数値のことです。

実際に128x128に調整したところ、GL_REPEAT でも正しく表示されました。縦と横を異なる数値に(128x64など)してもいけるのかどうかは試していないので不明です。

今回の場合は iOS の ES ですが、他のバージョンやプラットフォームでは違うかもしれませんせんせーん。

0 件のコメント:

コメントを投稿