我有一个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 );
在渲染球体之前。
它只会使球体变白,并且不会显示下面的花朵。我对此并不感到惊讶。
有人知道如何创建面具吗?
感谢您的帮助。
答案 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控件,那么我的方法将不起作用。