制限を調べるなど。

シェーダーがうまく動かなくて、気になって調べてみた。
使ったのははこんなコード。

#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

iPhone 3GS

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が思ってたより少ないぞ・・・。
数字の意味が完全にはわかってないので、もうちょっと調べないと。