3

私は描画ソフトウェアを作成しています。ブラシのパフォーマンスと外観の両方を適切なレベルにほぼ改善しましたが、最後に1つ問題があります。私が探していたパフォーマンス(複数の取り消し/履歴レベル)を取得するには、すべての形状をテクスチャに描画し、そのテクスチャを単純な4つの頂点のポリゴンで使用する必要がありました。すべてがうまくいき、パフォーマンスは素晴らしく、見た目も素晴らしくなりました(特にマルチサンプリングを有効にした後)それでも、別のフレームバッファーでテクスチャを描画するプロセスのどこかで、下の画像のように輪郭が各オブジェクトを囲みます。輪郭の色がの色と同じであることがわかりましたglClearColor。ブレンドだと思いますか?私が使う

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

しかし、よくわかりません。どうすれば輪郭を取り除くことができますか?

ここに画像の説明を入力してください

4

1 に答える 1

2

ブレンドには、事前に乗算されたアルファを使用してみてください。

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

これを任意の色で機能させるには、次のようにテクスチャを描画するカラーバッファもクリアする必要があります。

glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);

ただし、半透明のパーツがある場合は、問題が発生する可能性があります。

于 2013-03-03T02:22:59.177 に答える