2013-03-02 43 views
3

我試圖想出一種方法來重新創建或至少在Android設備上的OpenGl es 2.0中具有與最大鉗位混合等式相似的結果。使用其他方法創建GL_MAX混合等式等效

不幸的是,Android不支持glBlendEquation(GL_MAX_EXT)GL_MAX enum在Android的gl頭文件中定義,但執行時,結果爲GL_INVALID_ENUM,0x0500錯誤。

我有一個使用着色器和離屏畫面紋理的解決方案,其中每個渲染在使用着色器計算最大像素值的紋理之間來回跳動。

但是,這種解決方案對於大多數Android設備上的任何實時執行都不夠快。

因此,鑑於此限制,是否有任何方法使用不同的混合方程和混合因子重新創建相似的結果?

我已經嘗試了許多混合函數的組合,最近一直:

glBlendFunction(GL_SRC_ALPHA,GL_ONE_MINUS_ALPHA):此接近,但紋理變得太透明瞭。低alpha值的紋理很難看清楚。 glBlendFunction(GL_ONE_MINUS_DST_ALPHA,GL_SRC_ALPHA):這也有些什麼接近,但阿爾法積累太多,顏色變得比預期的更暗。

回答

1

如果你可以做GL_MAX blending而不需要特殊的混合功能...... OpenGL永遠不會添加它在第一個地方。所以你的選擇是沒有或者使用你的着色器方法。