Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenGL extensions available on different Android devices [closed]

I'm in the process of writing an OpenGL ES powered framework for my next Android game(s). Currently I'm supporting three different techniques of drawing sprites:

  • the basic way: using vertex arrays (slow)
  • using vertex-buffer-objects (VBOs) (faster)
  • using the draw_texture extension (fastest, but only for basic sprites, i.e. no transforming)

Vertex arrays are supported in OpenGL ES 1.0 and thus in every Android-device. I'm guessing most (if not all) of the current devices also support VBOs and draw_texture.

Instead of guessing, I'd like to know the extensions supported by different devices. If majority of devices support VBOs, I could simplify my code and focus only on VBOs + draw_texture.

It'd be helpful to know what different devices support, so if you have an Android-device, do report the extensions list please. :)

String extensions = gl.glGetString(GL10.GL_EXTENSIONS); 

I've got a HTC Hero, so I can share those extensions next.

like image 886
MH114 Avatar asked Jan 19 '10 13:01

MH114


People also ask

Does OpenGL work on Android?

Android supports OpenGL both through its framework API and the Native Development Kit (NDK).

Can OpenGL be updated on Android?

The OpenGL drivers on Android are not user upgradable.

What is OpenGL traces in Android?

Tracer is a tool for analyzing OpenGL for Embedded Systems (ES) code in your Android application. The tool allows you to capture OpenGL ES commands and frame by frame images to help you understand how your graphics commands are being executed.

What are OpenGL extensions?

OpenGL extensions are a means for OpenGL implementations to provide new or expanded functionality that the core of OpenGL does not provide. Using extensions should not be looked on as something to be avoided; it should be accepted as standard practice for the OpenGL user.


1 Answers

OpenGL ES extensions on HTC G1 (Android 1.6):

  • GL_ARB_texture_env_combine
  • GL_ARB_texture_env_crossbar
  • GL_ARB_texture_env_dot3
  • GL_ARB_texture_mirrored_repeat
  • GL_ARB_vertex_buffer_object
  • GL_ATI_extended_texture_coordinate_data_formats
  • GL_ATI_imageon_misc
  • GL_ATI_texture_compression_atitc
  • GL_EXT_blend_equation_separate
  • GL_EXT_blend_func_separate
  • GL_EXT_blend_minmax
  • GL_EXT_blend_subtract
  • GL_EXT_stencil_wrap
  • GL_OES_byte_coordinates
  • GL_OES_compressed_paletted_texture
  • GL_OES_draw_texture
  • GL_OES_fixed_point
  • GL_OES_matrix_palette
  • GL_OES_point_size_array
  • GL_OES_point_sprite
  • GL_OES_read_format
  • GL_OES_single_precision
  • GL_OES_vertex_buffer_object
  • GL_QUALCOMM_vertex_buffer_object
  • GL_QUALCOMM_direct_texture

OpenGL ES version on HTC G1 (Android 1.6):

  • OpenGL ES 1.0-CM

I'm including the version as retrieved by:
gl.glGetString(GL10.GL_VERSION)

It's pretty interesting in that it doesn't follow the specification. The profile is supposed to be before the number. It is also needed to determine capabilities. For example, the Droid doesn't report VBO support in its extension list. It does report an OpenGL ES version of 1.1, however. That means it does support VBOs, because VBOs were made mandatory in the 1.1 version.

like image 129
Lance Nanek Avatar answered Sep 16 '22 15:09

Lance Nanek