2011-07-26 11 views
1

ペイントアプリケーションを作成していて、ペイントブラシを使用して描画を正常に実装しました。私の問題は、色が既に塗られているスクリーンにカラーを再描画したくないということです。 。スクリーンショットを見てください。私はOpenGl ESを使用しています。スクリーンのピクセルの色を現在のブラシの色と一致させようとしましたが、正しくできませんでした。 probliemてくれてありがとう。..OpenGL ESを使用したペイントアプリケーションのカラーオーバーラップ問題

スクリーンショット:私はここに私のコードを貼り付けていますhttp://imageshack.us/photo/my-images/842/screenshot20110726at601.png/

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
    { 

CGRect bounds =[self bounds]; 
UITouch *touch = [[event touchesForView:self] anyObject]; 
//glDisable(GL_BLEND); 

    glEnable(GL_BLEND);  
    Byte pixel[4]; 
glReadPixels(location.x,location.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &pixel); 
NSLog(@"%d %d %d %d",pixel[0],pixel[1],pixel[2],pixel[3]); 

r_comp=(float)pixel[0]/255; 
g_comp=(float)pixel[1]/255; 
b_comp=(float)pixel[2]/255; 

artbrushAppDelegate *app=(artbrushAppDelegate *)[[UIApplication sharedApplication]delegate]; 

    if(r_comp==app.rg && g_comp==app.gg && b_comp==app.bg) 
// app.rg,app.bg,app.gg are brush colors saved in global varable 
{ 

    glEnable(GL_BLEND); 
} 

else 
{ 

    glDisable(GL_BLEND); 
} 
+0

異なるブレンド機能を使いこなそうとしましたか?この呼び出しを追加すると 'glBlendFunc(GL_ONE_MINUS_DST_ALPHA、GL_ONE_MINUS_SRC_ALPHA);'が実行されることに興味があります。または何か似たようなもの(あなたのために働いたものを見つけるためにブレンド機能を使いこなす必要があります)。ちょっと考えました... – Ian

+0

ok ..大歓迎..しかし、私はそれらをプロジェクトで使っています.. –

答えて

0

全体があるとして、あなたは、「レイヤー」塗料が不透明であるメカニズムが、彼らは層を適用することができます私はどこかのフォーラムでそれを読む..

関連する問題