Проблема OpenGL ES с графическим процессором PowerVR SGX - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть обои OpenGL Live, которые отлично работают на всех телефонах, кроме тех, что с серией PowerVR SGX.Это включает в себя почти все телефоны Samsung и серии Motorola Droid.Обои - только черный экран на телефонах PowerVR с графическим процессором.Я целую неделю ломал голову, пытаясь разобраться в этой проблеме, но мне не повезло.

Одно отличие между разными графическими процессорами - это сжатие текстур.Некоторые из вещей, которые я сделал в этом отношении, я изменил свое изображение текстуры на квадрат 256x256.Изменил его с 8-битного на 16-битный rgba и даже попытался проиндексировать.

У меня есть список всех расширений, которые доступны в PowerVR, и тех, которые доступны в Adreno.Кажется, что есть довольно много различий в доступных расширениях, но я не знаю, какие функции идут с какими расширениями (хотя я могу несколько догадываться).Вот список функций, которые я использую:

  • glLightfv
  • glMaterialfv
  • glDepthFunc
  • glEnableClientState
  • glViewport
  • glMatrixMode
  • glLoadIdentity
  • gluPerspective
  • glclearcolor
  • glclear
  • glTranslatef
  • glRotatef
  • glVertexPointer
  • glTexCoordPointer
  • glColor4f
  • glNormal3f
  • glDrawArrays
  • glTexParamterx
Я использую GlWallPaperService Роберта Грина и попробовал это решение на . Попытка нарисовать текстурированные треугольники на устройстве не удалась, но эмулятор работает.Почему? .Кто-нибудь знает, почему чипы PowerVR доставляют мне такие трудности, и что я могу с этим поделать?

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

Возможно, это вам не поможет, но я заметил:

Разница между разными графическими процессорами заключается в сжатии текстур.Некоторые из вещей, которые я сделал в этом отношении, я изменил свое изображение текстуры на квадрат 256x256.Изменил его с 8-битного на 16-битный rgba и даже попытался проиндексировать.

Насколько мне известно, ни одно из современных устройств не поддерживает индексированные текстуры.Кроме того, чтобы использовать сжатие текстур, необходимо указать формат сжатых текстур, который конкретно поддерживается устройством (что обычно влечет за собой запуск компрессора на платформе хоста / разработки).SGX поддерживает PVRTC и ETC, но включены ли они, зависит от платформы

2 голосов
/ 27 сентября 2011

Удаление EGL10.EGL_RED_SIZE, EGL10.EGL_GREEN_SIZE и EGL10.EGL_BLUE_SIZE, но оставление EGL10.EGL_DEPTH_SIZE, EGL10.EGL_NONE в eglChooseConfig работало.Я предполагаю, что микросхема PowerVR обрабатывает RGB таким образом, что затрудняет их определение.

0 голосов
/ 18 декабря 2011

Исходя из моего собственного опыта работы с этим GPU, он будет предлагать конфигурации GLES, которые после применения не будут работать (т.е. контекст GLES не будет создан). Обходной путь - посмотреть на код GLSurfaceView, развернуть свой собственный и опробовать каждую предложенную конфигурацию, работает ли она для создания контекста.

...