我四处搜索,似乎 glBlendEquation 在 Android 中有一些问题,-GL_MAX/MIN 甚至没有在 opengles规范中列出
我需要找到 GL_MIN blendEquation 模式的解决方法。那可能吗?只有当 alpha 大于我要写入的像素的 alpha 时,我才想写入颜色缓冲区。是否可以在没有任何扩展或使用超过 1 个纹理的情况下做到这一点?
我试图避免的肮脏解决方案就是这个。使用帧缓冲区对象和着色器来模拟颜色缓冲区和混合模式:
Modify existing shaders to blend the scene with an FBO_1, into FBO_2.
Render FBO_2 to the screen.
下一个绘图调用将 FBO_1 与 FBO_2 交换,因为 FBO_2 等于颜色缓冲区。
一个“非侵入式”且效率更低的替代方案是使用 3 个 FBO 和一个着色器,并进行额外的传递。
Render scene to FBO_1 //without any modification to existing shaders
Blend FBO_1 with FBO_2 into FBO_3 //with new shader.
Render FBO_3 to the screen.
下一个绘图调用将 FBO_2 与 FBO_3 交换。这种替代方案的唯一优点是我不必修改现有的绘图逻辑。
我真的不喜欢这些想法。我很乐意接受更好的答案!