【问题标题】:eglCreateWindowSurface set an X positioneglCreateWindowSurface 设置一个 X 位置
【发布时间】:2018-05-04 08:29:47
【问题描述】:

我正在使用 opengles 在 Android 上创建自己的显示器。 我有一个显示器,我想在上面显示两个表面(第一个是 Android,第二个是我自己的显示器)。

注意:显示器分辨率为 (1920x1080)

为此,我能够在左侧 (1280x1080) 为我的 Android 系统 UI 设置自定义大小。所以我现在在右侧(840x1080)有一个可用空间供其他显示器使用。 我能够用这个分辨率(840x1080)创建一个绿色表面,问题是它在左边,所以它隐藏了 Android 系统。我想在其上应用 1280 像素的翻译,使其位于右侧。

这是我的代码:

const EGLint attribs[] = {
            EGL_RED_SIZE,   8,
            EGL_GREEN_SIZE, 8,
            EGL_BLUE_SIZE,  8,
            EGL_DEPTH_SIZE, 0,
            EGL_NONE
    };
    EGLint w, h;
    EGLint numConfigs;
    EGLConfig config;
    EGLSurface surface;
    EGLContext context;

    EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);

    eglInitialize(display, NULL, NULL);
    eglChooseConfig(display, attribs, &config, 1, &numConfigs);
    if ((surface = eglCreateWindowSurface(display, config, s.get(), NULL)) == EGL_NO_SURFACE) {
    ALOGD("initSurface() eglCreateWindowSurface failed");
    return;
    }
    context = eglCreateContext(display, config, NULL, NULL);
    eglQuerySurface(display, surface, EGL_WIDTH, &w);
    eglQuerySurface(display, surface, EGL_HEIGHT, &h);
    ALOGD("Surface size is w = %d h = %d", w, h);

    if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
    ALOGD("initSurface() eglMakeCurrent failed");
        return ;
    }

    glShadeModel(GL_FLAT);
    glDisable(GL_DITHER);
    glDisable(GL_SCISSOR_TEST);
    glClearColor(0, 1, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    eglSwapBuffers(display, surface);

使用 opengles 应用此翻译需要什么功能?

【问题讨论】:

    标签: android opengl-es opengl-es-2.0 surface egl


    【解决方案1】:

    我认为 EGL 本身不可能做到这一点; EGL 只是创建可供 OpenGL ES 和显示子系统使用的表面。

    实际上创建可以放置该表面的窗口是主机操作系统的本机操作;它实际上与 EGL 无关,而是由每个平台上的特定于操作系统的代码处理。

    Android 并没有真正设计为具有传统意义上的“窗口”,所以我什至不确定这是否可以使用 Android API。这里有专有的解决方案——比如三星的分屏模式——但我认为它们不会暴露给应用程序 API,而不是作为窗口调整大小事件。

    【讨论】:

    • 即使使用着色器程序或一些矩阵操作?如果我创建一个带有半透明部分的全屏表面以使 Android 可见,而另一部分则使用自定义视图怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    相关资源
    最近更新 更多