iOS / GLES2: Как программно определить максимально доступные текстурные единицы? - PullRequest
0 голосов
/ 28 июня 2011

Определение максимального размера текстуры не проблема: Как определить максимальное разрешение текстур на 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, это одна и та же память). Или может быть гарантирован некоторый нижний предел?

Ответы [ 2 ]

2 голосов
/ 21 ноября 2012

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

glGenTextures()

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

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

int num_texture_units;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num_texture_units);
0 голосов
/ 28 июня 2011

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

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

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

...