安卓OpenGL ES GL10或GL11

8

这两者有何不同,我如何查询实际手机支持的是GL10还是GL11?

我有一部HTC Legend手机,它支持GL11吗?或者Hero...等等...

4个回答

8
有一个API可以解决这个问题:
public int getGLVersion() 
{
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    ConfigurationInfo info = am.getDeviceConfigurationInfo();
    return info.reqGlEsVersion;
}

高16位表示主版本号,低16位表示次版本号。更多信息,请访问此链接

  • 对于OpenGLES 1.1,getGLVersion() == 0x00010001
  • 对于OpenGLES 2.0,getGLVersion() == 0x00020000

如果您想要字符串表示(用于显示),请调用ConfigurationInfo.getGlEsVersion()


这并不返回硬件支持的内容,而是返回应用在AndroidManifest.xml中请求的内容。 - ryanm
不,2.0表示GLES20,1.1表示GL11,1.0表示GL10。 - Lior

1

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

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

0
使用glGetString来查询版本信息,当解析返回的字符串时必须小心 - 一些实现并不完全遵循规范 - 但是这里的代码works for me对我有效。

0

实际上,任何真正拥有图形硬件的设备都将支持1.1。 1.0是为软件实现而设计的概要文件,据我所知不存在仅支持1.0的硬件。

如果没有图形硬件,您无论如何都不想在其上运行gl应用程序,因为性能非常差,因此您可以将AndroidManifest.xml设置为指定版本0x00010001,然后您就知道它将支持GL11。

此外,任何在“11年或之后发布的产品”都很可能支持GLES 2.0(所有gl2.0支持gl1.1)

检查android市场统计数据,90.5%的设备支持2.0,而1.0甚至不在统计数据中,因为没有人使用1.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接