如何在OpenGL ES 2.0中使用可分离的滤镜着色器?

vkalit

我正在尝试在我的iOS应用程序中使用着色器进行图像处理。我可以将一对着色器(顶点和片段)用于滤镜图像(例如,垂直或水平模糊),但是如果我需要先应用垂直模糊然后再应用水平模糊该怎么办。我应该如何在我的render()功能中链接此动作

一些代码示例将是极好的!

Matic Oblak

您实际上无能为力。您需要从模糊的第一步开始填充缓冲区,然后再开始下一步。最好的办法是先通过纹理绘制,然后再通过第二遍重新绘制到主缓冲区。通常,如果您有2个以上的遍,则将需要2个纹理,然后在每个遍之后交换:使用第一个着色器将图像绘制到texture1,将第二个着色器从texture1绘制到texture2,将第三个着色器从texture2绘制到texture1 ...

因此,您需要一个帧缓冲区对象(FBO),这意味着只需生成一个新的帧缓冲区和具有所需大小的纹理(您很可能需要使用POT纹理),然后将纹理作为颜色附加到帧缓冲区依恋glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, targetTexture, 0);

完成此操作后,您将剩下几乎所有的标准绘制过程。只需绑定该帧缓冲区以对其进行绘制,设置视口,设置矩阵(如果有)...所有内容都将被绘制到纹理上,就好像它是主缓冲区一样。

绘制完纹理后,可以使用该纹理将其绘制回主缓冲区。只需绑定主缓冲区并绑定FBO的纹理,而不是原始图像的纹理。其余代码应相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在OpenGL ES着色器中使用3x3单应矩阵?

来自分类Dev

如何在OpenGL ES 2中正确缩放

来自分类Dev

如何在OpenGL ES 2中处理多个对象

来自分类Dev

OpenGL可分离的着色器程序和现代硬件上的管线性能

来自分类Dev

OpenGL ES2:在顶点着色器(iOS)中使用“ layout”关键字时语法错误

来自分类Dev

如何在OpenGL ES 2中使用顶点数组对象

来自分类常见问题

OpenGL ES如何在着色器中设置布尔值

来自分类Dev

如何在cocos2d-x 3.1中使用片段着色器?

来自分类Dev

如何在cocos2d-x 3.1中使用片段着色器?

来自分类Dev

OpenGL ES 2中足够快的实时卷积着色器的最佳方法是什么?

来自分类Dev

OpenGL ES 2中足够快的实时卷积着色器的最佳方法是什么?

来自分类Dev

如何在opengl es 2.0中的2D游戏中设置深度范围?

来自分类Dev

如何在openGL ES 2.0中执行2次传递以获得模糊效果

来自分类Dev

如何在opengl着色器中使用unsigned short?

来自分类Dev

如何在着色器(OpenGL 4.0)中访问2不可调整大小的内存的幂次?

来自分类Dev

Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

来自分类Dev

Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

来自分类Dev

顶点着色器或片段着色器中的OpenGL ES2.0 Lighting

来自分类Dev

OpenGL ES着色器中的Alpha渐变不平滑

来自分类Dev

OpenGL ES 2:将标量顶点属性传递给着色器程序

来自分类Dev

如何在Android的OpenGL ES中渲染深度纹理

来自分类Dev

如何在OpenGL ES 2.0中管理多个纹理?

来自分类Dev

如何在Common Lisp中编写opengl ES 2.0 / 3.0?

来自分类Dev

如何在iOS OpenGL ES 2.0中画星

来自分类Dev

如何在 Android 的 OpenGL ES 2.0 中检查上传的纹理?

来自分类Dev

如何在Android上使用OpenGL ES扩展

来自分类Dev

使用GPUImage在OpenGL ES着色器中具有布尔返回类型的函数

来自分类Dev

在opengl es 2中如何释放纹理(ios硬崩溃)

来自分类Dev

Android上的OpenGL ES 2:如何使用VBO

Related 相关文章

  1. 1

    如何在OpenGL ES着色器中使用3x3单应矩阵?

  2. 2

    如何在OpenGL ES 2中正确缩放

  3. 3

    如何在OpenGL ES 2中处理多个对象

  4. 4

    OpenGL可分离的着色器程序和现代硬件上的管线性能

  5. 5

    OpenGL ES2:在顶点着色器(iOS)中使用“ layout”关键字时语法错误

  6. 6

    如何在OpenGL ES 2中使用顶点数组对象

  7. 7

    OpenGL ES如何在着色器中设置布尔值

  8. 8

    如何在cocos2d-x 3.1中使用片段着色器?

  9. 9

    如何在cocos2d-x 3.1中使用片段着色器?

  10. 10

    OpenGL ES 2中足够快的实时卷积着色器的最佳方法是什么?

  11. 11

    OpenGL ES 2中足够快的实时卷积着色器的最佳方法是什么?

  12. 12

    如何在opengl es 2.0中的2D游戏中设置深度范围?

  13. 13

    如何在openGL ES 2.0中执行2次传递以获得模糊效果

  14. 14

    如何在opengl着色器中使用unsigned short?

  15. 15

    如何在着色器(OpenGL 4.0)中访问2不可调整大小的内存的幂次?

  16. 16

    Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

  17. 17

    Android OpenGL ES 2:如何在主活动中将OpenGL活动用作片段

  18. 18

    顶点着色器或片段着色器中的OpenGL ES2.0 Lighting

  19. 19

    OpenGL ES着色器中的Alpha渐变不平滑

  20. 20

    OpenGL ES 2:将标量顶点属性传递给着色器程序

  21. 21

    如何在Android的OpenGL ES中渲染深度纹理

  22. 22

    如何在OpenGL ES 2.0中管理多个纹理?

  23. 23

    如何在Common Lisp中编写opengl ES 2.0 / 3.0?

  24. 24

    如何在iOS OpenGL ES 2.0中画星

  25. 25

    如何在 Android 的 OpenGL ES 2.0 中检查上传的纹理?

  26. 26

    如何在Android上使用OpenGL ES扩展

  27. 27

    使用GPUImage在OpenGL ES着色器中具有布尔返回类型的函数

  28. 28

    在opengl es 2中如何释放纹理(ios硬崩溃)

  29. 29

    Android上的OpenGL ES 2:如何使用VBO

热门标签

归档