2013-10-26 3 views
0

저는 스트로크를 그리기 위해 OpenGL 페인트 코드를 사용하고 있지만 스트로크가 완료된 후에 다른 이미지로 전송하고 OpenGL 뷰를 지우는 드로잉 앱을 가지고 있습니다. 그 때문에 CoreGraphics를 사용하고 있습니다. 그러나 이미지를 CG로 전송하기 전에 OpenGL보기를 지우는 문제가 발생합니다 (나중에 지울지라도).코어 그래픽과 Open GL 드로잉

(그리고 다른 방법으로, 즉 이미지가 필요합니다. 그래서 paintingView 소거되고

// 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는 OpenGL을보기) 여기서

이다 않도록 다음 그림 이미지를 소거하는 제 그려진 것은 코드 mainImage.image 변수가 나오기 전에 CurrentImage Context로 설정하십시오.

저는이 초보자 일 뿐이므로 어떤 생각이 도움이됩니까?

덕분에

답변

1

당신은 FBO의 (OpenGL을 프레임 버퍼 오브젝트)를 사용하여 아마 더 낫다. 하나의 그림을 FBO으로 그린 ​​다음 이전 FBO를 저장하면서 도면을 새로운 FBO로 전환하십시오. 2 개의 FBO간에 앞뒤로 탁구를 할 수 있습니다. iOS에서 FBO을 사용하는 경우 Here are the docs

+0

감사하지만 단지 mainImage.image 변수가 설정되고 화면에 그려진 후에 * 지우기 명령을 강제로 실행하는 방법이 궁금합니다. –

+0

죄송합니다. 확실하지 않습니다. – user1118321