0

我正在尝试使用 GLKView 创建带有触摸输入的签名。但现在我需要一个 UIImage 位于签名下方。简短:我想使用自定义 GLKView 在 UIImage 上方绘制线条。

问题是我的线每次都被绘制在图像下方,无论我是否将 opaque 设置为 NO 并 insertSubview: belowSubview..

否则我在纹理的帮助下尝试过,但我不知道该怎么做..

如果可能的话,我不想使用 GLKViewController ;) 提前致谢!

更新:

我发现了我的问题,现在我得到了我想要的结果。

在构造函数的 GLKView 中,我启动了 EAGLContext。我忘了将上下文设置为自我。

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (context) {

    self.opaque = NO; // set view transparent
    self.context = context; // set the context to itself
}

尽管将 opaque 设置为 NO 不是一个好的解决方案,但它是我任务的唯一有效解决方案。

4

1 回答 1

1

有几种方法值得考虑。

一种是查看视图包含而不是分层 - 制作GLKView您正在绘制的视图的子视图UIImage

另一种是在您GLKView使用 OpenGL ES 中绘制图像。如果您查看 SO 上已经存在的文档和答案,则需要做更多的工作,但不会太难。它还有一些额外的好处:因为背景图像和你的绘图都进入同一个帧缓冲区,你可以在 GL 中控制混合。以下是一些入门提示:

  1. 用于GLKTextureLoader将图像转换为 OpenGL ES 纹理。
  2. 设置一个GLKBaseEffect实例以使用您的纹理进行绘制。别忘了告诉它prepareToDraw
  3. 使用纹理和效果绘制一个四边形。这个答案有一个相当不错的起点。
  4. 绘制背景图像后,绘制您的签名,它将在图像顶部。
于 2014-03-17T17:07:51.117 回答