Android OpenGL ES GL10或GL11

时间:2011-01-23 16:02:19

标签: android opengl-es

这有什么区别,以及我如何查询实际手机支持的内容? (GL10或GL11)

我有一个HTC Legend,是否支持GL11? 或英雄......等......?

4 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

您可以在GL10实例上使用instanceof来测试是否支持GL11或更高版本:

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

答案 2 :(得分:0)

使用glGetString查询版本信息,在解析返回的字符串时必须小心 - 某些实现并不完全遵循规范 - 但代码here适用于我。

答案 3 :(得分: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甚至不在统计数据中,因为1.0从未被任何人使用过。