9

GLPaint サンプル コードに基づいた小さなペイント アプリケーションがあります。正常に動作しています。私の問題は、既に描画されたテクスチャを消去する「ブラシ」を実装する必要があることです。

私の目標は、エッジが柔らかい消しゴムを手に入れることです。今、描画に使用したのと同じテクスチャを使用しましたが、ブレンド機能を

glBlendFunc(GL_SRC_ALPHA, GL_ONE);

glBlendFunc(GL_ZERO, GL_ZERO);

結果は、正方形の長方形の消しゴムです。それは大丈夫ですが、それは私が実際に望んでいるものではありません。ソフトエッジが必要です。正方形の長方形ではなく、丸い消しゴムを作りたいです。

それを達成する方法はありますか?または、独自のカスタム ブレンディング関数を作成する方法があるかどうか知っていますか?

4

1 に答える 1

12

テクスチャの背景色を知っていますか?その場合、「消去」する代わりに、その上に背景をペイントするだけで済みます。ブレンド mod ではなく、色のみを変更するため、これはいくぶん単純になります。

ブレンディングでそれを行う必要がある場合は、次を試してください。

glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);

これは、完全なアルファの領域でゼロを使用し、ブラシのアルファがフェード オフするにつれて、既存の色にフェード バックします。

このページには、可能なモードの完全なリストが含まれています: http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml

于 2010-11-02T04:47:01.383 に答える