我正在为我的下一个 Android 游戏编写一个 OpenGL ES 驱动的框架。目前我支持三种不同的绘制精灵的技术:
- 基本方法:使用顶点数组(慢)
- 使用顶点缓冲区对象(VBO)(更快)
- 使用draw_texture扩展(最快,但仅适用于基本精灵,即没有转换)
OpenGL ES 1.0 支持顶点数组,因此每个 Android 设备都支持。我猜大多数(如果不是全部)当前设备也支持 VBO 和 draw_texture。
与其猜测,我想知道不同设备支持的扩展。如果大多数设备支持 VBO,我可以简化我的代码并只关注 VBO + draw_texture。
了解支持哪些不同设备会很有帮助,因此如果您有 Android 设备,请务必报告扩展列表。:)
String extensions = gl.glGetString(GL10.GL_EXTENSIONS);
我有一个HTC Hero,所以接下来我可以分享这些扩展。
HTC G1 (Android 1.6) 上的 OpenGL ES 扩展:
HTC G1 (Android 1.6) 上的 OpenGL ES 版本:
我包括通过以下方式检索的版本:
gl.glGetString(GL10.GL_VERSION)
这很有趣,因为它不遵循规范。配置文件应该在数字之前。还需要确定能力。例如,Droid 不会在其扩展列表中报告 VBO 支持。但是,它确实报告了 OpenGL ES 版本 1.1。这意味着它确实支持 VBO,因为 VBO 在 1.1 版本中是强制性的。