2

尝试遮盖 ColorSplash 之类的纹理或 iSteam 等其他应用程序时,最好的选择是什么?

我开始学习 OPENGL ES 就像... 4 天前(我是一个菜鸟)并尝试了以下方法:

1)我创建了一个彩色纹理2D,第一个纹理的灰度版本和第三个纹理2D,称为蒙版

2)我还为画笔创建了一个texture2D ......它是灰度的并且它是不透明的(画笔=黑色= 0,0,0,1,环境=白色= 1,1,1,1)。我的目的是创建一个边缘平滑的抗锯齿刷,但我现在可以使用普通刷

3)我在互联网上搜索了遮罩技术,找到了这个教程 ZeusCMD - 设计和开发教程:OpenGL ES 编程教程 - 关于遮罩的遮罩。本教程告诉我使用混合来实现遮罩...首先绘制彩色,然后使用 glBlendFunc(GL_DST_COLOR, GL_ZERO) 进行遮罩,然后使用 glBlendFunc(GL_ONE, GL_ONE) 进行灰度...这给了我一些接近我想要的东西。 ..但不完全是我想要的。结果被掩盖了,但不知何故过亮了

4)为了绘制到蒙版纹理,我使用了一个额外的帧缓冲区对象(FBO)

我对生成的图像(过亮的图片)和使用这种方法实现的速度并不满意。我认为正常的方法是直接绘制到灰度(叠加)texture2D,只影响画笔命中位置的 alpha 通道。有没有一种快速的方法来实现这一目标?我进行了很多搜索,但从未得到清晰易懂的答案。然后,在主绘制循环中,我只能绘制彩色纹理,然后将灰度与 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 混合。

我只想学习使用 OPENGL ES,它让我发疯,因为我无法让它正常工作。一个建议,一个教程的链接将不胜感激。

4

1 回答 1

0

对于真正适用于 iPhone 的东西,试试纹理组合器

我使用它们将 RGBA 纹理与另一个转换后的 alpha 纹理相比较。
这是为了在没有模板缓冲区的情况下生成复杂的阴影,
但您的情况似乎并没有那么不同。

请注意,此链接根据片段着色器解释了组合器,效果很好。
不幸的是,组合器比它们的着色器对应物更复杂。

于 2009-08-06T09:16:08.853 回答