背景のピクセルの色を反転させる方法


10

私は、JavaとjMonkeyEngineを使用してゲームとマップエディターを書いています。マップエディターでは、ワイヤーフレームの球でブラシを作成しました。私の問題は、どこでも見えるようにしたいので、このブラシの「背後」にあるピクセルの色を反転させたいです。フラグメントシェーダー(GLSL)でそれを実行したかったのですが、このピクセルの色を取得する方法がわかりません。


jMonkeyEngineはポストプロセスエフェクトをサポートしていますか?あなたはおそらくこの方法で行かなければならないでしょう。
sam hocevar

ええ、jMonkeyEngineはポストプロセスエフェクトをサポートしていますが、現時点ではあまり詳しくありません。提案をありがとう。
m4tx

うーん、気にしないでください。もっと簡単な方法があります。ちゃんと答えようと思います。
sam hocevar

glLogicOp(GL_XOR)を使用できますか?opengl.org/sdk/docs/man/xhtml/glLogicOp.xml
Adam

1
反転は、不飽和のグレーのようなコーナーケース全体での可視性を保証するものではなく、他の多くのケースでは可視性が低いことに注意してください。
Lars Viklund、

回答:


15

これをすばやく簡単に行うには、次のパラメータを使用して標準のブレンド方程式を使用します。

glEnable(GL_BLEND);
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);

場合はsrc、ソースの色(新しいオブジェクトからの1)があるとdstデスティネーションカラー次のように新しい色を計算します(フレームバッファである1)です。

new = src * (1 - dst) + dst * 0
    = src * (1 - dst)

つまりsrc = 1、を設定するだけです白、あなたは逆のビデオを取得します。GLSLフラグメントシェーダーは次のようになります。

void main(void) {
    gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

4
あなたはあなたのアルファブレンディングを知っているように聞こえます!
bobobobo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.