我是Iphone opengl ES编程的首发。我有两个纹理,第一个是背景并占据全屏。我在第一张图片的顶部打印第二张图片,但第二张图片的白色背景覆盖了部分背景。我希望背景在前景图片没有颜色(或白色)的地方可见。我无法弄清楚如何正确使用glBlendFunc。
在打印第二张图片之前,我正在使用以下内容进行混合:
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glColor4f(1.0f,1.0f,1.0f,1.0f);
答案 0 :(得分:0)
我希望背景可见 前景图片没有的地方 颜色(或白色)。
你有两个选择,最简单的选择是使用alpha测试并为你的前景图像添加一个alpha通道,这样每个白色像素(或没有颜色区域)都有一个特殊的值,让我们说'0.0f和所有其他1.0 F。
然后在渲染前景时,使用glEnable(GL_ALPHA_TEST)
启用alpha测试,并使用glAlphaFunc(GL_GREATER, 0.5f)
设置alpha函数。这将仅接受/绘制alpha值大于0.5f的片段并丢弃/不绘制所有alpha值小于0.5f的片段。
第二种选择是像你一样使用混合,但你还需要在前台添加额外的alpha通道并正确设置glBlendFunc
。
更多信息:http://iphone-3d-programming.labs.oreilly.com/ch06.html