Проблемы с Samsung Galaxy S2 OpenGl ES 2.0 - PullRequest
1 голос
/ 05 марта 2012

Это мой первый вопрос здесь.Я новичок в разработке для Android и сейчас создаю живые обои (LiveSpace). Я уже загрузил облегченную версию, вы можете найти ее здесь.https://market.android.com/details?id=thedavincode.alienland&feature=search_result#?t=W251bGwsMSwyLDEsInRoZWRhdmluY29kZS5hbGllbmxhbmQiXQ..

Я тестировал его на телефонах Xperia и Lg P990, и он, кажется, работает нормально, но с Galaxy S2 есть странная проблема.(2.3.4. Android) Мое приложение имеет 11 объектов (классов) с текстурой для каждого объекта, и каждый объект имеет свою собственную программу и шейдеры.Галактика не будет отображать более 8 текстур.он идет от 0 до 7, а затем остальные объекты выглядят черными.что бы я ни пробовал, ничего не изменится.Я читал, что есть ограничение на 8 текстур, но на шейдер, а не на общее количество.Любая помощь будет полезна .. спасибо.

1 Ответ

1 голос
/ 05 марта 2012

SGS2 (Mali400MP) имеют ограничение макс.8 текстурных блоков.Если вы используете только одну текстуру в шейдере, то вы можете использовать только одну единицу.Например:

  1. Когда вы выполняете некоторые настройки с помощью шейдера, привязывайте форму текстуры к первому текстурному блоку (0), например: glUniform1i(uTexture, 0); - делайте это для всех ваших объектов
  2. Перед рендерингом каждого объекта связывайте текстуру, которая ему принадлежит: glBindTexture(GL_TEXTURE_2D , m_texture); - вы привязываете текстуру к активному текстурному блоку.
  3. Так как в этом случае используется только один текстурный блок, вы можете опустить glActiveTextureвызовите, так как по умолчанию первый активированный текстурный блок (GL_TEXTURE0)

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

Использование одного текстурного блокана объект / текстуру это не выход.

...