Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS/GLES2:如何以编程方式确定最大可用纹理单位?_Ios_Textures_Opengl Es 2.0_Max - Fatal编程技术网

iOS/GLES2:如何以编程方式确定最大可用纹理单位?

iOS/GLES2:如何以编程方式确定最大可用纹理单位?,ios,textures,opengl-es-2.0,max,Ios,Textures,Opengl Es 2.0,Max,确定最大纹理大小没有问题: 此外,文档还指定了片段着色器可以处理的最大采样器数量 该链接在标题下指定 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 ); gl

确定最大纹理大小没有问题:


此外,文档还指定了片段着色器可以处理的最大采样器数量

该链接在标题下指定

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 );
命令+点击GL_TEXTURE1会显示常量,一直到GL_TEXTURE31,所以看起来他们在为未来几代人做准备


但是我在哪里可以找到可以创建的最大数量的纹理

glGenTextures( n, pTexID ); // what is max n?

这是否仅受设备上视频可用内存的物理量限制?(我读到VRAM和RAM之间没有实际的物理区别,它是相同的内存)。或者可以保证某个下限吗?

我在这里找到了一个答案:


基本上它说你只受记忆的限制。因此,不可能给出安全最大值。您必须检查每次是否成功创建纹理。

没错,创建纹理对象的数量

glGenTextures()
只受记忆的约束

顺便说一句,可以在运行时使用

int num_texture_units;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num_texture_units);