使用其他方法创建等效的GL_MAX混合等式

时间:2013-03-02 02:12:01

标签: android opengl-es opengl-es-2.0

我正在试图找到一种方法来重新创建或者至少与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累积太多而颜色变得比预期更暗。

1 个答案:

答案 0 :(得分:1)

如果你可以GL_MAX blending而不需要特殊的混合功能...... OpenGL绝不会首先添加它。因此,您可以选择不使用或使用着色器方法。