2013-04-04 33 views

Odpowiedz

14

Jest, można uzyskać informacje o GPU wykorzystujących OpenGL:

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

Aby uzyskać więcej informacji, patrz: https://developer.android.com/guide/topics/graphics/opengl.html

+1

A co będzie gl? Po prostu próbuję to zrozumieć. Wewnątrz gl.glGet ... –

+0

tutaj jest: http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html –

+0

Przykro mi, ale proszę wyjaśnić, jak ogłosić, że gl w "Activity"? –

2

Mam nadzieję, że jego przydatna przydatna .. pierwszy w tym sprawdzanie kodu, jeśli urządzenie jest wspierać GPU lub Nie.

// 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; 
    } 

drugi: Ten kod podać informacje GPU ..

umieścić w tym kodzie wewnątrz MyRenderer klasy ..

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; 

} 
1

Oto SampleActivity, aby uzyskać informacje o 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

Doskonały przykład, aby uzyskać informacje GPU. Jak mogę zaimplementować to samo w projekcie biblioteki java, który jest dołączany jako plik jar w aplikacji Android. –

+0

Nie można tego zrobić za pomocą JAR (archiwum Java), ponieważ wymaga on zestawu SDK systemu Android. możesz go rozwijać jako moduł biblioteki Androida (AAR). – Vinay

Powiązane problemy