确定最大纹理大小没问题: How to detect maximum texture resolution on iPhone?
此外,文档指定了片段着色器可以处理的最大采样器数,here
该链接指定在标题
下PowerVR SGX上的OpenGL ES 2.0
您可以在片段着色器中使用最多8个纹理
你加载纹理,例如:
// bind gem texture to slot #0, and inform shader via uniform
glActiveTexture( GL_TEXTURE0 );
glBindTexture( GL_TEXTURE_2D, texId_dull );
glUniform1i( [ self.program idForUniform: "U1_sampId_Gem" ], (GLuint)0 );
// ... similarly for texture #1
glActiveTexture( GL_TEXTURE1 );
glBindTexture( GL_TEXTURE_2D, texId_sparkle );
glUniform1i( [ self.program idForUniform: "U2_sampId_Sparkle" ], (GLuint)1 );
和COMMAND +点击GL_TEXTURE1显示常量到GL_TEXTURE31,所以看起来它们正在准备好几代。
但是我在哪里可以找到可以创建的最大纹理数。
glGenTextures( n, pTexID ); // what is max n?
这仅限于设备上可用于视频的物理内存量吗? (我读过VRAM和RAM之间没有实际的物理区别,它是相同的内存)。或者可以保证一些下限?
答案 0 :(得分:2)
这是正确的,由
创建的纹理对象的数量glGenTextures()
仅受记忆约束。
纹理单元的数量(硬件上的8个)可以顺便说一句。在运行时使用
进行查询int num_texture_units;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num_texture_units);
答案 1 :(得分:0)
我刚刚在这里找到答案:
glGenTextures - is there a limit to the number of textures?
基本上它说你只受记忆的限制。所以不可能给出安全的最大值。您必须检查每次是否成功创建纹理。