1

我四处搜索,似乎 glBlendEquation 在 Android 中有一些问题,-GL_MAX/MIN 甚至没有在 opengles规范中列出

我需要找到 GL_MIN blendEquation 模式的解决方法。那可能吗?只有当 alpha 大于我要写入的像素的 alpha 时,我才想写入颜色缓冲区。是否可以在没有任何扩展或使用超过 1 个纹理的情​​况下做到这一点?

4

1 回答 1

0

我试图避免的肮脏解决方案就是这个。使用帧缓冲区对象和着色器来模拟颜色缓冲区和混合模式:

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 交换。这种替代方案的唯一优点是我不必修改现有的绘图逻辑。

我真的不喜欢这些想法。我很乐意接受更好的答案!

于 2012-09-11T15:30:55.970 回答