我正在试图找到一种方法来重新创建或者至少与Android设备上的OpenGl es 2.0中的最大钳位混合方程有相似的结果。
很遗憾,Android不支持glBlendEquation(GL_MAX_EXT)
。 GL_MAX enum
在Android的gl标头中定义,但在执行时,结果是GL_INVALID_ENUM
,0x0500错误。
我有一个使用着色器和屏幕外纹理的解决方案,其中每个使用着色器在纹理之间来回渲染ping-pongs来计算最大像素值。
但是,对于大多数Android设备上的任何实时执行,此解决方案都不够快。
所以考虑到这个限制,有没有办法只使用不同的混合方程和混合因子来重建类似的结果?
我尝试了很多混合功能组合,最接近的是:
glBlendFunction(GL_SRC_ALPHA,GL_ONE_MINUS_ALPHA):接近但纹理变得过于透明。具有低alpha值的纹理很难看到。
glBlendFunction(GL_ONE_MINUS_DST_ALPHA,GL_SRC_ALPHA):这也接近但是alpha累积太多而颜色变得比预期更暗。