0

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 コンテキストに設定される前に、paintingView が消去されます。

私はこれらの初心者なので、どんな考えも役に立ちます。

ありがとう

4

1 に答える 1

1

FBOs (OpenGL フレーム バッファ オブジェクト)を使用した方がよいでしょう。1 つFBOに描画してから、描画を新しい FBO に切り替えながら、前のものを保存します。2 つの FBO 間でピンポンを行ったり来たりすることができます。iOS で sを使用するためのドキュメントは次のとおりです。FBO

于 2013-10-26T20:35:42.270 に答える