我有一个绘图应用程序,我使用openGL绘制代码绘制笔划,但想在笔划完成后将其转移到另一个图像,然后清除OpenGL视图。为此,我正在使用CoreGraphics。我遇到了一个问题,即在通过CG传输图像之前清除OpenGL视图(即使我之后将其清除)
(我想要另一种方式,即首先绘制的图像然后要删除的绘画图像,以避免任何类型的闪烁)
(paintingView是openGL视图)
以下是代码:
// Save the previous line drawn to the "main image"
UIImage *paintingViewImage = [[UIImage alloc] init];
paintingViewImage = [_paintingView snapshot];
UIGraphicsBeginImageContext(self.mainImage.frame.size);
[self.mainImage.image drawInRect:CGRectMake(0, 0, self.mainImage.frame.size.width, self.mainImage.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
// Get the image from the painting view
[paintingViewImage drawInRect:CGRectMake(0, 0, self.mainImage.frame.size.width, self.mainImage.frame.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
self.mainImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.paintingView erase];
因此,在将mainImage.image变量设置为CurrentImage Context之前,将删除paintingView。
我只是这些人的初学者,所以任何想法都有帮助。
由于
答案 0 :(得分:1)
使用FBO
(OpenGL帧缓冲区对象)可能会更好。您绘制成一个FBO
,然后在保存前一个FBO时将绘图切换到新的FBO。你可以在两个FBO之间来回乒乓。 Here are the docs在iOS上使用FBO
。