如何在OpenGL中将场景渲染为蒙版?

时间:2009-04-03 16:24:50

标签: iphone opengl-es

我有一个EAGLContext绘图到CAEAGLLayer(通过iPhone SDK中的标准GLGravityView示例)。

我要做的是将我的视图放在另一个视图的顶部,并使用我在OpenGL中渲染的内容来掩盖底层视图。

假设底部视图是一张花的图片,我将OpenGL视图置于顶部,然后将OpenGL透明色设置为不透明黑色,然后渲染我的球体。我希望球体穿过黑色,只露出花朵图片的圆形部分。更好的方法是展示球体(半透明)和花朵,切割黑色。

我打电话给

glView.backgroundColor = [UIColor clearColor];
glClearColor(0.0, 0.0, 0.0, 1.0);

当我设置视图并调用

glColor4f( 1.0, 1.0, 1.0, 0.5 );

在渲染球体之前。

它只会使球体变白,并且不会显示下面的花朵。我对此并不感到惊讶。

有人知道如何创建面具吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你现在可能已经放弃了,但以防万一......

我认为你的glClearColor(0.0,0.0,0.0,1.0)应该是glClearColor(0.0,0.0,0.0,0.0),因为你想要将视图清除为“透明黑”,Alpha = 0而不是“opaque black” Alpha = 1。

您还应确保您的OpenGL视图未标记为不透明。

答案 1 :(得分:0)

我使用“EAGLayer”或其他任何名称做了类似的事情。只需先绘制背景,然后在顶部绘制更多内容。这是有效的,因为底部“层”的敲击功能是无或最小。当我想在底部“层”中点击功能时,我只是在某些xy坐标附近寻找水龙头(而不是像拖拽真实图层那样拖放按钮。)

这实际上取决于你想要对底层做什么。如果您想要的只是花卉图片,那么我的方法就可以了。如果你想拖放更复杂的UI控件,那么我的方法将不起作用。