iOS / GLES2: Как программно определить максимальное количество доступных текстурных блоков?

Определить максимальный размер текстуры не проблема: Как определить максимальное разрешение текстуры на iPhone ?


Кроме того, в документации указано максимальное количество семплеров, которые может обрабатывать фрагментный шейдер, здесь

Эта ссылка указывает под заголовком

OpenGL ES 2.0 на PowerVR SGX
Вы можете использовать до 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, это одна и та же память). Или может быть гарантирован какой-то нижний предел?


person P i    schedule 28.06.2011    source источник


Ответы (2)


Правильно, количество объектов текстуры, созданных

glGenTextures()

связана только памятью.

Число текстурных блоков (8 на вашем оборудовании) может, кстати. запрашиваться во время выполнения, используя

int num_texture_units;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num_texture_units);
person umlum    schedule 20.11.2012

Я только что нашел здесь ответ:

glGenTextures - есть ли ограничение на количество текстур?

В основном это говорит о том, что вы ограничены только памятью. поэтому невозможно дать безопасный максимум. Вы должны каждый раз проверять, удачно ли была создана текстура.

person P i    schedule 28.06.2011