6

私はiOSで手書きアプリケーションに取り組んでいます。OpenGL ESで実装されているサンプルプロジェクト「GLPaint」をiOSのドキュメントから見つけ、これに手を加えてみました。

タッチポイントを追跡し、ポイント間の曲線を計算し、粒子のイメージだけを曲線に描画して、指が通過したように見せます。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, brushData); // burshData is from CGImage, it is 

// vertexBuffer is generated based on the calculated points, it's just a sequence of point where need to draw image.
glVertexPointer(2, GL_FLOAT, 0, vertexBuffer); 
glDrawArrays(GL_POINTS, 0, vertexCount);

glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

私が得たのは、かなり見栄えのする実線です。しかし、今は実線ではなく半透明のハイライトを描きたいと思っています。そこで、コードを変更せずに、パーティクル イメージを透明度 50% のイメージに置き換えます。

透明度50%の粒子画像の結果

透明度50%の粒子画像の結果

ブレンドには何か問題があります。

必要なもの

必要なもの

半透明のパーティクル イメージを使用して 3 つの点を描画します。交差領域は 50% の透明度を維持する必要があります。

解決策は何ですか?

4

3 に答える 3

0

ブレンド関数を変更する必要があります。あなたはそれをいじることができます:

glBlendFunc(GL_SRC_ALPHA,GL_ONE);

たぶん(GL_ONE, GL_ONE)、あなたのケースを処理する方法を忘れましたが、解決策はその機能にあります。

http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml

于 2013-01-04T09:54:14.437 に答える