2013-08-23 122 views
0

OpenGL ES 2.0的颜色减法

glBlend(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); 

我可以使像素2倍较暗由α(0.5)

乘以但是应该怎么做,如果我要减去彩色

例如red - 0.1而不是​​

似乎着色器无法产生负面的颜色。 我不想渲染浮点纹理的渲染缓冲区。 太贵了。应用程序将运行缓慢。它不适用于所有大多数电话。

回答

1

我不能专门说,在OpenGL中没有太多的东西,但仍然从我能提供的帮助中,我会做。

如果我理解正确,您需要一个在0到1之间的值(包括float-float)以从已经存在的颜色分量的值中减去。

为此,请访问此链接:http://www.andersriggelsen.dk/glblendfunc.php

它可以帮助你将生活在两个图像之间混合的检查。

检查混合功能:GL_FUNC_SUBTRACT

+0

你一定是赢家:)我等待着,因为'GL_FUNC_SUBTRACT'似乎支持甚少。我不确定我是否可以在没有测试或大多数平台的情况下依靠它。太多报告“GL_FUNC_SUBTRACT”无法正常工作。 – Max

0

一个问题需要注意的是你不能使用GLUtils.texImage2D()在Android上加载阿尔法纹理。这是Google真正需要更好记录的常见问题。问题在于Bitmap类将所有图像转换为预倍数格式,但这不适用于OpenGL ES,除非图像完全不透明。最好的解决方案是使用本机代码。本文给出了更详细的关于这一点:

http://software.intel.com/en-us/articles/porting-opengl-games-to-android-on-intel-atom-processors-part-1

+0

我不会减。但我不明白Java/Android问题与我的OpenGL ES混合问题有何关系。如果我可以添加纹理但是不能减去那么Alpha不是问题。是的。我使用本地代码并在iOS和Android上从PVR文件加载纹理。 – Max

+0

听起来你正在绕过Bitmap类,所以这不是问题。 – ClayMontgomery