1

我已经将 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 );

就在渲染球体之前。

它只是使球体呈灰白色,并没有显示底层的花朵。我对此并不感到惊讶。

有谁知道如何创建一个面具呢?

谢谢您的帮助。

4

2 回答 2

1

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

我认为您的 glClearColor(0.0, 0.0, 0.0, 1.0) 应该是 glClearColor(0.0, 0.0, 0.0, 0.0) 因为您想使用 Alpha=0 将视图清除为“透明黑色”而不是使用 Alpha = 的“不透明黑色” 1.

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

于 2009-06-24T20:50:44.517 回答
0

我只使用“EAGLayer”或任何它的名字做了类似的事情。只需先绘制背景,然后在顶部绘制更多内容。这很有效,因为底部“层”的轻敲功能要么没有,要么很少。当我想在底部“层”中点击功能时,我只是在某些 xy 坐标附近寻找点击(而不是像使用真实层那样拖放按钮。)

这真的取决于你想对底层做什么。如果你想要的只是花图片,那么我的方法有效。如果您想拖放更复杂的 UI 控件,那么我的方法将行不通。

于 2009-04-07T03:45:46.350 回答