核心图形和Open GL绘图

时间:2013-10-26 17:25:40

标签: ios opengl-es uiimageview core-graphics

我有一个绘图应用程序,我使用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。

我只是这些人的初学者,所以任何想法都有帮助。

由于

1 个答案:

答案 0 :(得分:1)

使用FBO(OpenGL帧缓冲区对象)可能会更好。您绘制成一个FBO,然后在保存前一个FBO时将绘图切换到新的FBO。你可以在两个FBO之间来回乒乓。 Here are the docs在iOS上使用FBO