2013-04-04 79 views

回答

14

還有就是,你可以通過使用OpenGL GPU獲得信息:

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)); 

欲瞭解更多信息,請參閱:https://developer.android.com/guide/topics/graphics/opengl.html

+1

什麼是gl?試圖理解它。裏面gl.glGet ... – 2013-04-04 06:57:52

+0

它在這裏: http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html – 2013-04-04 07:04:32

+0

對不起,但是,請你解釋如何在'Activity'中聲明gl? – 2013-04-04 07:23:11

2

我希望它有用對你有用.. 首先這段代碼檢查設備是否支持GPU還是不支持。

// Check if the system supports OpenGL ES 2.0. 
    final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
    final ConfigurationInfo configurationInfo = activityManager 
      .getDeviceConfigurationInfo(); 
    final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000; 

    if (supportsEs2) { 
     Log.i("JO", "configurationInfo.reqGlEsVersion:" 
       + configurationInfo.reqGlEsVersion + "supportsEs2:" 
       + supportsEs2); 
     // Request an OpenGL ES 2.0 compatible context. 
     myGlsurfaceView.setEGLContextClientVersion(2); 

     final DisplayMetrics displayMetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

     // Set the renderer to our demo renderer, defined below. 
     myRenderer = new MyRenderer(this, myGlsurfaceView); 
     myGlsurfaceView.setRenderer(myRenderer, displayMetrics.density); 
     myGlsurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 
    } else { 
     // This is where you could create an OpenGL ES 1.x compatible 
     // renderer if you wanted to support both ES 1 and ES 2. 
     return; 
    } 

第二個:此代碼給GPU信息..

把它放在MyRenderer類裏面這個代碼..

public void determineGraphicSupport(GL10 gl){ 
    int _graphicEngine = GRAPHICS_CANVAS; 

    String extensions = gl.glGetString(GLES20.GL_EXTENSIONS); 
    //String version = GLES10.glGetString(GL10.GL_VERSION); 
    String version = GLES20.glGetString(GLES20.GL_VERSION); 

    //String renderer = gl.glGetString(GL10.GL_RENDERER); 
    String renderer = GLES20.glGetString(GLES20.GL_RENDERER); 

    boolean isSoftwareRenderer = renderer.contains("PixelFlinger"); 
    boolean supportsDrawTexture = extensions.contains("draw_texture"); 

    int[] arGlMaxTextureSize = new int[1]; 

    gl.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, arGlMaxTextureSize, 0); 

    if(!isSoftwareRenderer && supportsDrawTexture && _width >= 480 && _height >= 800 
      && arGlMaxTextureSize[0] >= 4096) 
     _graphicEngine = GRAPHICS_OPENGL_DRAW_TEXTURE; 
    else 
     _graphicEngine = GRAPHICS_CANVAS; 

} 
11

更簡單的辦法: 亞行外殼dumpsys | grep的GLES

1

這裏是一個SampleActivity讓GPU信息:

public class MainActivity extends Activity implements GLSurfaceView.Renderer{ 
    private TextView textView; 
    private GLSurfaceView glSurfaceView; 
    private StringBuilder sb; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     textView = (TextView) findViewById(R.id.textView); 

     final ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
     final ConfigurationInfo configurationInfo = activityManager 
       .getDeviceConfigurationInfo(); 
     sb=new StringBuilder(); 
     sb.append("GL version:").append(configurationInfo.getGlEsVersion()).append("\n"); 

     textView.setText(sb.toString()); 
     this.glSurfaceView = new GLSurfaceView(this); 
     this.glSurfaceView.setRenderer(this); 
     ((ViewGroup)textView.getParent()).addView(this.glSurfaceView); 
    } 

    @Override 
    public void onClick(View v) { 
    } 

    @Override 
    public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
     sb.append("RENDERER").append(gl.glGetString(GL10.GL_RENDERER)).append("\n"); 
     sb.append("VENDOR").append(gl.glGetString(GL10.GL_VENDOR)).append("\n"); 
     sb.append("VERSION").append(gl.glGetString(GL10.GL_VERSION)).append("\n"); 
     sb.append("EXTENSIONS").append(gl.glGetString(GL10.GL_EXTENSIONS)); 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       textView.setText(sb.toString()); 
       glSurfaceView.setVisibility(View.GONE); 
      } 
     }); 
    } 

    @Override 
    public void onSurfaceChanged(GL10 gl, int width, int height) { 
    } 

    @Override 
    public void onDrawFrame(GL10 gl) { 
    } 
} 
+0

獲取GPU信息的完美示例。如何在Android應用程序中包含jar文件的java庫項目中實現相同的功能。 – 2017-07-20 20:15:34

+0

你不能用JAR(Java歸檔)來完成它,因爲它需要Android SDK。您可以將其作爲Android庫模塊(AAR)進行開發。 – Vinay 2017-07-25 08:30:29

相關問題