【发布时间】:2019-05-01 06:16:18
【问题描述】:
我在安卓下。我有一个纹理 ID,我想更新这个纹理的内容(基本上我想对这个纹理应用一个 OpenGL 过滤器)。注意:我不想在每次绘制纹理时应用 OpenGL 过滤器,我想更改纹理的原始内容(通过对其应用 OpenGL 过滤器)
【问题讨论】:
标签: android opengl-es textures egl
我在安卓下。我有一个纹理 ID,我想更新这个纹理的内容(基本上我想对这个纹理应用一个 OpenGL 过滤器)。注意:我不想在每次绘制纹理时应用 OpenGL 过滤器,我想更改纹理的原始内容(通过对其应用 OpenGL 过滤器)
【问题讨论】:
标签: android opengl-es textures egl
“OpenGL 过滤器”是什么意思?有纹理采样过滤器(GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER 等)。将这些应用于纹理没有任何意义,因为它们定义了在纹理中心之间的区域对纹理进行采样时如何获取数据。
但是,如果您想使用 OpenGL(ES) 管道对纹理应用一些高斯过滤器(或任何其他卷积过滤器),则可以使用称为“渲染到纹理”的概念。这个想法是渲染到纹理对象而不是“可见”默认帧缓冲区。
在 OpenGL(ES) 中,这可以使用 Framebuffer Objekt(简称 FBO)来完成:
现在您渲染到目标纹理。只需使用输入纹理绘制一个屏幕填充四边形,结果就会出现在目标纹理中。
返回默认帧缓冲调用glBindFramebuffer(0)
一些注意事项:
【讨论】: