2011-01-23 85 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位表示主要版本低位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 2011-01-23 22:24:45

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年或者以後將最有可能支持GLES 2.0(以及所有gl2.0支持gl1.1)

檢查Android的市場統計數據,設備的90.5%,支持2.0和1.0 ISN甚至在統計中也是如此,因爲任何人都不會使用1.0。