2011-06-28 27 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); 
相關問題