ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2015年08月08日

[iOS] glActiveTextureの上限は

iOSのOpenGLで同時に扱えるテクスチャの数がいくつか。

glActiveTexture( GL_TEXTURE? );

の?にいったいいくつまで許されているのか。

Apple 公式資料によると
Hardware GPU Information

MAX_TEXTURE_IMAGE_UNITS
または
MAX_COMBINED_TEXTURE_IMAGE_UNITS
の項目らしい。

OpenGL ES 3.0 on Apple A7 and A8 GPUs
では
MAX_TEXTURE_IMAGE_UNITS = 16
MAX_COMBINED_TEXTURE_IMAGE_UNITS = 32

OpenGL ES 2.0 on Apple A7 and A8 GPUs

OpenGL ES 2.0 on PowerVR SGX Series 5 Hardware
では どちらも8

2.0でやってるんで8まででやれば対象機種全部大丈夫ということらしい。

すなわち

GL_TEXTURE0 〜 GL_TEXTURE7

しかし実際のコードで

GL_MAX_TEXTURE_IMAGE_UNITS
を試してみると
34930

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
35661

という妙な値が返される。Hexでも意味のある数字とは思えない。
(試したのは iOS7 iPhone5 )

なんでだろう?
とりあえず公式資料を元にプログラムしてみるけど。
posted by みこあいさ at 08:57| iOS開発