简介
一直以来有个疑惑,T-Mobile G1 上的 OpenGL 是软件实现的还是硬件实现的,
在网上查了好多次,但众说纷纭,有说是软件实现,也有说是硬件实现。受
glxinfo 的启发,本文使用 glGetString 接口做一下检测,结论是 G1 手机的
OpenGL 是基于硬件实现的。
思路
使用 glGetString 接口查看 GL_RENDERER, GL_VERDOR, GL_VERSION,
GL_EXTENSIONS 等信息,尤其是 GL_RENDERER,即可判断出是硬件实现还是软件
实现。
核心代码片段如下所示:
Log.d("GL", "GL_RENDERER = " + gl.glGetString(GL10.GL_RENDERER));
Log.d("GL", "GL_VENDOR = " + gl.glGetString(GL10.GL_VENDOR));
Log.d("GL", "GL_VERSION = " + gl.glGetString(GL10.GL_VERSION));
Log.i("GL", "GL_EXTENSIONS = " + gl.glGetString(GL10.GL_EXTENSIONS));
使用 LogCat 看 debug 信息:
adb logcat
数据
测试程序跑在虚拟机上的打印信息:
GL_RENDERER = Android PixelFlinger 1.0
GL_VENDOR = Android
GL_VERSION = OpenGL ES-CM 1.0
GL_EXTENSIONS =
GL_OES_byte_coordinates
GL_OES_fixed_point
GL_OES_single_precision
GL_OES_read_format
GL_OES_compressed_paletted_texture
GL_OES_draw_texture
GL_OES_matrix_get
GL_OES_query_matrix
GL_ARB_texture_compression
GL_ARB_texture_non_power_of_two
GL_ANDROID_direct_texture
GL_ANDROID_user_clip_plane
GL_ANDROID_vertex_buffer_object
GL_ANDROID_generate_mipmap
从 GL_RENDERER 信息可以看出,虚拟机上的 OpenGL 是 Android PixelFlinger
实现的,即软件实现。
测试程序跑在 G1 手机上的打印信息:
GL_RENDERER = Q3Dimension MSM7500 01.02.08 0 4.0.0
GL_VENDOR = QUALCOMM, Inc.
GL_VERSION = OpenGL ES 1.0-CM
GL_EXTENSIONS =
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
从上面的 GL_RENDERER 信息可以看出,G1 的 OpenGL 是基于 Q3Dimesion
MSM7500 芯片实现的,即是硬件实现,支持硬件加速。
Q3Dimesion MSM7500 的 GLBenchmark 测试细节:
http://www.glbenchmark.com/resultdetails.jsp?benchmark=glpro&resultid=6392206&D=LG%20KS20
|