在没有 SurfaceView 的 Android 上获取 GPU 信息

ale*_*rea 5 android gpu opengl-es surfaceview

在Android上,有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息?我不想使用 OpenGL 绘制任何内容,但我只需要获取硬件信息,例如供应商、OpenGL ES 版本、可用扩展等。

Jim*_*imN 1

抱歉,我不知道如何在 Android 上执行此操作,但函数 glGetString 允许您访问 OpenGL 信息。下面是一个 C++ 风格的示例代码,它将输出您的硬件支持的扩展,我希望您能够适应 Android:

void PrettyPrintExtensions(){
    std::string extensions = (const char*) glGetString(GL_EXTENSIONS);
    char* extensionStart = &extensions[0];
    char** extension = &extensionStart;
    std::cout << "Supported OpenGL ES Extensions:" << std::endl;
    while (*extension)
        std::cout << '\t' << strsep(extension, " ") << std::endl;
    std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

通过更改 glGetString 的参数,您还可以访问供应商、渲染器和版本。请参见:

http://www.khronos.org/opengles/sdk/1.1/docs/man/glGetString.xml

  • 谢谢你的建议。不幸的是,在 Android 上,函数 glGetString() 只能从类型为 GL10(或 GL11、GL20,具体取决于您使用的版本)的对象中使用。您无法自行实例化该对象,但它会作为事件侦听器的参数传递给您(例如 onDrawFrame(GL10 gl))。[OpenGL 示例](http://developer.android.com/resources/tutorials/opengl/opengl-es10.html#projection-and-views) (2认同)