シェーダーがうまく動かなくて、気になって調べてみた。
使ったのははこんなコード。
#define LOG_GL_INTEGER( target ) {int num;glGetIntegerv(target, &num);printf("%s : %d\n",#target,num);}
LOG_GL_INTEGER(GL_MAX_VERTEX_ATTRIBS); LOG_GL_INTEGER(GL_MAX_VERTEX_UNIFORM_VECTORS); LOG_GL_INTEGER(GL_MAX_VARYING_VECTORS); LOG_GL_INTEGER(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS); LOG_GL_INTEGER(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS); LOG_GL_INTEGER(GL_MAX_TEXTURE_IMAGE_UNITS); LOG_GL_INTEGER(GL_MAX_FRAGMENT_UNIFORM_VECTORS);
結果
Simulator (SDK4.1)
GL_MAX_VERTEX_ATTRIBS : 16 GL_MAX_VERTEX_UNIFORM_VECTORS : 128 GL_MAX_VARYING_VECTORS : 8 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS : 8 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS : 0 GL_MAX_TEXTURE_IMAGE_UNITS : 8 GL_MAX_FRAGMENT_UNIFORM_VECTORS : 64
GL_MAX_VERTEX_ATTRIBS : 16 GL_MAX_VERTEX_UNIFORM_VECTORS : 128 GL_MAX_VARYING_VECTORS : 8 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS : 8 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS : 0 GL_MAX_TEXTURE_IMAGE_UNITS : 8 GL_MAX_FRAGMENT_UNIFORM_VECTORS : 64
iPod 4th Gen
GL_MAX_VERTEX_ATTRIBS : 16 GL_MAX_VERTEX_UNIFORM_VECTORS : 128 GL_MAX_VARYING_VECTORS : 8 GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS : 8 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS : 0 GL_MAX_TEXTURE_IMAGE_UNITS : 8 GL_MAX_FRAGMENT_UNIFORM_VECTORS : 64
VARYING_VECTORSが思ってたより少ないぞ・・・。
数字の意味が完全にはわかってないので、もうちょっと調べないと。