使用 Open GL ES 2.0 创建 OFF SCREEN 表面

Posted

技术标签:

【中文标题】使用 Open GL ES 2.0 创建 OFF SCREEN 表面【英文标题】:Creating OFF SCREEN surface using Open GL ES 2.0 【发布时间】:2014-12-16 10:10:42 【问题描述】:

我想通过在 EGL 初始化期间创建用户定义的表面来使用 OpenGL ES 2.0 绘制一个场景。 这样我就可以使用绘制的表面进行进一步处理。

我认为我们必须使用 eglCreatePixmapsurface(),但我不确定它的用法。请帮忙?

【问题讨论】:

您是否尝试过阅读有关 FBO(帧缓冲区对象)的信息?基本上你所做的就是创建一个帧缓冲区,附加一个渲染缓冲区(或者更确切地说是一个纹理),然后像普通(主)帧缓冲区一样绘制到它。然后你就可以像使用其他纹理一样使用这个纹理了。 Open GL ES creating Off-screen的可能重复 【参考方案1】:

大多数平台都不支持像素图。你也许可以用你的 EGL 创建一个,但如果你的操作系统不知道它是什么,它就没有用了。

android 上,必须按照 here 的说明创建屏幕外表面。

FBO 是大多数平台上的最佳解决方案,但 FBO 确实适用于使用 OpenGL ES 进行进一步处理。读取图像通常需要使用 glReadPixels(),这在大多数平台上非常慢。

我收集了一系列文章 here,展示了如何在某些平台上使用 FBO。

【讨论】:

以上是关于使用 Open GL ES 2.0 创建 OFF SCREEN 表面的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL ES 2.0 shader开发

打开 GL ES 2.0 画一个正方形

共享内存架构中的 OpenGL (ES 2.0) VBO 性能

Open GL ES 中的动画网格

如何在白色背景上的Open GL ES中显示彩色纹理画笔?

如何在Android上使用OpenGL ES 2.0绘制点