2013-10-26 212 views
0

我有一個繪圖應用程序,我使用openGL畫圖代碼繪製筆畫,但想要在筆畫完成後將其轉移到另一個圖像,然後清除OpenGL視圖。爲此,我使用了CoreGraphics。然而,我遇到了一個問題,其中OpenGL視圖在圖像通過CG傳輸之前被清除(即使我之後清除它)(核心圖形和Open GL繪圖

(而且我希望它的另一種方式,即圖像是繪製第一然後畫圖像要被擦除,以避免任何類型的閃爍)

(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]; 

所以paintingView正在被擦除在mainImage.image變量之前設置爲CurrentImage上下文。

我只是一個初學者,所以任何想法都很有幫助。

感謝

回答

1

你可能最好使用FBO S(OpenGL的幀緩衝對象)。你畫一個FBO,然後切換繪圖到一個新的FBO,而你保存前一個。你可以在兩個FBO之間來回乒乓球。 Here are the docs在iOS上使用FBO

+0

謝謝,但出於好奇,有沒有辦法強制擦除命令只發生* mainImage.image變量設置並繪製到屏幕後? –

+0

對不起,我不確定。 – user1118321