我使用opengles在Android上创建自己的显示器。 我有一台显示器,我想在其上显示两个表面(第一个是Android,第二个是我自己的显示器)。
注意:显示器分辨率为(1920x1080)
为此我可以在左侧(1280x1080)为我的Android系统用户界面设置自定义尺寸。所以我现在在右边(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应用此翻译需要什么功能?
答案 0 :(得分:0)
我认为这不可能与EGL本身有关; EGL只创建可供OpenGL ES和显示子系统使用的表面。
实际上创建可以放置该表面的窗口是主机操作系统的本机操作;它与EGL无关,并且由每个平台上的特定于操作系统的代码处理。
Android的设计并不是传统意义上的“windows”,所以我甚至不确定使用Android API是否可行。这里有专有的解决方案 - 比如三星的分屏模式 - 但我认为除了作为窗口调整大小事件之外,它们不会暴露给应用程序API。