【发布时间】:2014-07-10 09:57:11
【问题描述】:
我正在尝试将 OpenGL 中的蒙版应用于具有透明度的图像。
我当前的代码如下所示:
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
[self.bgSprite render];
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
[self.maskSprite render];
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);
[self.contentSprite render];
}
所以,首先我要绘制我的背景精灵,然后用我的蒙版在其中切一个洞,然后在那个洞内绘制蒙版图像。但是这种方法不是我需要的,因为我想在我的内容图像透明的地方看到我的背景纹理,但现在我看到那里是白色。
在此之前,我使用过 android,并且可以使用 Pointer Duff 模式。第一步是使用 SOURCE 模式绘制蒙版,然后使用 SOURCE_IN 绘制内容图像,然后使用 DESTINATION_OVER 绘制背景。但我在 OpenGL 中找不到。
【问题讨论】:
-
你的
DEPTH_TEST和ALPHA_TEST是什么状态? -
@Constantin 我没有改变它,所以不管是默认的。我是 openGL 的新手
标签: ios opengl-es glkit alphablending