Android,OpenGLES,CmdLine工具,获得MainDisplay分辨率

纳达夫·鲁布

环境

  • Windows(x64)主机
  • Android 5.0 USB已连接到Windows计算机
  • 三星Galaxy 5
  • VisualGDB
  • OpenGL(v1.4)
  • ADB CmdLine工具=>本机C ++(无Java)

用例

实施提取主要显示分辨率的ADB命令行工具(这是工具功能的一部分)

以下代码打印出乱码数据,如何使用作为ADB命令行工具运行的Native C ++代码获得主显示分辨率?

程式码片段

HRESULT GetMainDisplayResolution(OUT SIZE& sz) {
    EGLConfig pConfigs[MAX_CONFIGS] = { 0 };
    EGLint iErr = 0;
    EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
    if (0 == display)
        return E_FAIL;
    int maj, min;
    if (FALSE == eglInitialize(display, &maj, &min)) {
        iErr = eglGetError();
        return E_FAIL;
    }

    EGLint iCfgCount = 0;
    if (FALSE == eglGetConfigs(display, pConfigs, MAX_CONFIGS, &iCfgCount)) {
        iErr = eglGetError();// EGL_NOT_INITIALIZED
        return E_FAIL;
    }

    for (int i = 0; i < iCfgCount; i++) {
        eglGetConfigAttrib(display, pConfigs[i], EGL_HORIZONTAL_RESOLUTION, (EGLint*)&sz.cx);
        eglGetConfigAttrib(display, pConfigs[i], EGL_VERTICAL_RESOLUTION, (EGLint*)&sz.cy);
        printf("Cfg %i, x:%i, y:%i", i, sz.cx, sz.cy);
    }

    return S_OK;
}
淡淡的

EGL无权访问显示器本身。它从“窗口管理器”获取一个窗口,然后由SurfaceFlinger与其他东西合成。此处描述体系结构

如果您不介意使用非公共API,并且以“ shell”或“ root”(您将作为ADB命令运行)运行,则可以执行一些测试代码,然后查询直接从SurfaceFlinger显示属性。看一下WindowSurface(如果您想查看运行中的代码,可以在附近找到经典的“ San Francisco”演示。)WindowSurface是在Android 5.0“ Lollipop”中添加的,替换了试图绕过SurfaceFlinger的较旧的实现(需要关闭Android框架) )。新的实现只是利用正在运行的任何东西。

screenrecord工具使用相同的SurfaceComposerClient API来确定如何调整视频大小(请参见第540行)。如果您想要的只是分辨率而实际上并不关心EGL,那么这是一个简单的示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android上缩放图像以获得各种分辨率

来自分类Dev

Android图标分辨率

来自分类Dev

Unity Android分辨率

来自分类Dev

Android:SurfaceView分辨率低于屏幕分辨率

来自分类Dev

无法获得本机分辨率

来自分类Dev

VideoCamera获得支持的分辨率

来自分类Dev

无法获得本机分辨率

来自分类Dev

JavaScript获得WebCam分辨率

来自分类Dev

如何获得比LCD物理分辨率更高的分辨率?

来自分类Dev

如何在Android上使用CameraX获得可用的分辨率?

来自分类Dev

Android MediaCodec HEVC支持的分辨率

来自分类Dev

在Android中降低图像分辨率

来自分类Dev

获取android屏幕分辨率

来自分类Dev

游戏的目标分辨率(Android)

来自分类Dev

Android SurfaceView与视图分辨率

来自分类Dev

高分辨率裁切工具

来自分类Dev

如何获得可访问的相机分辨率?

来自分类Dev

如何获得最大分辨率的文件时间戳?

来自分类Dev

更改对象尺寸以获得不同的分辨率

来自分类Dev

如何从golang中的url获得图像分辨率

来自分类Dev

如何获得显示分辨率(屏幕尺寸)?

来自分类Dev

如何使用SDL2获得屏幕分辨率?

来自分类Dev

如何快速获得分辨率更改事件?

来自分类Dev

如何从显示器获得完整分辨率?

来自分类Dev

Panoramio API获得高分辨率照片?

来自分类Dev

在Ubuntu 16.04上获得本机分辨率

来自分类Dev

如何在C ++中获得窗口的分辨率?

来自分类Dev

解析xrandr输出以获得可用的分辨率

来自分类Dev

重载分辨率