2011-06-28 30 views
0

确定最大纹理大小是没有问题的: How to detect maximum texture resolution on iPhone?iOS/GLES2:如何以编程方式确定最大可用纹理单位?


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

即链接指定的标题下

PowerVR SGX上的OpenGL ES 2.
您可以使用多达8个纹理在片段着色器

您加载纹理如:上GL_TEXTURE1

// 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_TEXTURE31,所以看起来他们是准备了几代人。


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

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

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

回答

1

这是正确的,通过

glGenTextures() 

创建纹理对象的数只受内存约束。

纹理单元的数量(8在您的硬件上)可以顺便说一句。在运行时使用查询

int num_texture_units; 
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num_texture_units); 
相关问题