- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以仅使用 eglCreateWindowSurface 返回的处理程序,在多个表面上从同一个应用程序逐个绘制?
我想要实现的是创建两个或多个表面并将它们传递给将在其上绘制的客户端,然后,完成后,基本上,我只需要执行 swapBuffers。一个简单的表面处理程序 (EGLSurface) 就足以让客户端绘制形状等了吗?
我找不到任何例子;每个示例都只是在当前上下文中绘制。
最佳答案
我会通过创建一个由纹理支持的 openGL 帧缓冲区来解决这个问题。我会为此画一次复杂的图画。然后我会使用纹理 ID 在每个 EGLSurface 上绘制一个四边形。
类似于:
eglMakeCurrent();
// generate na FB
glGenFramebuffers(1, &fb);
glBindFramebuffer(GL_FRAMEBUFFER, fb);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, mContextParams->mTexture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,
GL_UNSIGNED_BYTE, NULL);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, Texture, 0);
然后将花哨的东西绘制到帧缓冲区:
eglMakeCurrent();
glBindFramebuffer(GL_FRAMEBUFFER, fb);
// do draw here
// unbind
glBindFramebuffer(GL_FRAMEBUFFER, 0);
然后绘制到屏幕:
for (everyEGLContext)
{
eglMakeCurrent(display, surface, surface, context);
drawQuad(texture);
eqlSwapBuffers(display, surface);
}
关于opengl - 仅使用 EGLSurface 在多个表面上绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061753/
是否可以仅使用 eglCreateWindowSurface 返回的处理程序,在多个表面上从同一个应用程序逐个绘制? 我想要实现的是创建两个或多个表面并将它们传递给将在其上绘制的客户端,然后,完成后,
是否可以仅使用 eglCreateWindowSurface 返回的处理程序,在多个表面上从同一个应用程序逐个绘制? 我想要实现的是创建两个或多个表面并将它们传递给将在其上绘制的客户端,然后,完成后,
我想交替渲染使用 eglCreateWindowSurface 创建的 EGLSurface 和使用 eglCreatePbufferSurface 创建的 EGLSurface,重用 EGLDisp
我正在使用 Microsoft branch of the ANGLE project在通用 Windows 应用程序中访问 OpenGL。我也使用 C++/WinRT binding尽可能多地使用标
我是一名优秀的程序员,十分优秀!