GLIIView背后的UIImage

时间:2014-03-13 17:02:42

标签: ios objective-c opengl-es uiimage glkview

我尝试使用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
}

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

1 个答案:

答案 0 :(得分:0)

有几种方法值得一试。

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

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

  1. 使用GLKTextureLoader将图像转换为OpenGL ES纹理。
  2. 设置一个GLKBaseEffect实例,用于绘制纹理。不要忘记告诉prepareToDraw
  3. 使用纹理和效果绘制四边形。 This answer有一个相当不错的起点。
  4. 绘制背景图像后,绘制您的签名,它将位于图像的顶部。