我很想知道很长一段时间处理OpenGL FrameBuffer对象(FBO)的最佳方法.切换FBO可能成本很高,但也定义了新的附件.
你怎么快速做到的?
我在这三个之间犹豫不决:
1 FBO用于所有内容,更改附件但不要在FBO之间切换
1渲染路径中每个渲染目标(大小+格式)的FBO.这意味着我将为相似的渲染目标重用相同的FBO.但这样一种自定义模糊将花费4+ FBO.
每个渲染目标1个FBO,仅设置附件一次,然后在FBO之间切换
另外,我应该最小化FBO开关的数量(比如我最小化纹理绑定的数量)?
我有一个基于GLPaint示例代码的小涂料应用程序.它工作正常.我的问题是我需要实现一个"画笔"来擦除已经绘制的纹理.
我的目标是拥有一个柔软边缘的橡皮擦.现在我只使用了我用于绘图的相同纹理,但切换了混合功能
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
Run Code Online (Sandbox Code Playgroud)
至
glBlendFunc(GL_ZERO, GL_ZERO);
Run Code Online (Sandbox Code Playgroud)
结果是方形矩形橡皮擦.没关系,但这不是我真正想要的.我需要柔软的边缘.我想制作一个圆形橡皮擦而不是方形矩形.
你有什么猜测如何实现这一目标?或者你知道是否有办法创建我自己的自定义混合功能?