2011-01-23 2 views
8

Какая разница между этим и как я могу запросить то, что поддерживается реальным телефоном? (GL10 или GL11)Android OpenGL ES GL10 или GL11

У меня есть HTC Legend, поддерживаемый GL11 или нет? Или герой ... и т. Д.??

ответ

8

Там есть API для этого:

public int getGLVersion() 
{ 
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    ConfigurationInfo info = am.getDeviceConfigurationInfo(); 
    return info.reqGlEsVersion; 
} 

Верхняя порядка 16 бит представляют основную версию а младший младший - младший. Для получения дополнительной информации посетите this link. Итак:

  • Для OpenGLES 1,1, getGLVersion() == 0x00010001
  • Для OpenGLES 2,0, getGLVersion() == 0x00020000

Если вы хотите строковое представление (для отображения), вызов ConfigurationInfo.getGlEsVersion()

+0

ОК, 2.0 средний GL11? и GL10 означает Gl1.0 и GL1.1? – lacas

+0

Это не возвращает то, что аппаратное обеспечение может поддерживать, но то, что приложение запросило в AndroidManifest.xml – ryanm

+0

Нет, 2.0 Средства GLES20, 1.1 Средства GL11 и 1.0 Средства GL10. – Lior

1

Вы можете использовать instanceof на вашем экземпляре GL10, чтобы проверить, если GL11 или выше поддерживается:

public void onSurfaceCreated(GL10 gl, EGLConfig config) 
{   
    if(gl instanceof GL11) 
    { 
    // ... 
    } 
} 
0

Используйте glGetString для запроса информации о версии. Вы должны быть осторожны при разборе возвращаемой строки - некоторые реализации не совсем соответствуют спецификации, но код here работает для меня.

0

На практике все, что на самом деле имеет графическое оборудование, будет поддерживать 1.1. 1.0 был профилем, разработанным для программных реализаций, и не существует аппаратного обеспечения, поддерживающего только 1.0 afaik.

Если у него нет графического оборудования, вы действительно не хотите запускать приложение gl на нем, так или иначе из-за очень низкой производительности, поэтому вы можете просто установить AndroidManifest.xml для указания версии 0x00010001, а затем вы знаете, что он поддержит GL11.

Кроме того, все, что выпущен в '11 или более поздней версии, скорее всего, поддерживать Глес 2.0 (и все поддержки gl2.0 gl1.1)

Проверьте андроид статистику рынка, 90,5% устройств поддерживают 2,0 и 1,0 ISN даже в статистике, потому что 1.0 никогда не используется кем-либо.