2010-04-17 12 views
5

Ich frage mich, war der beste Weg, um die Farbpixel im Framepuffer zu invertieren ist. Ich weiß, es ist möglich, mit glReadPixels() und glDrawPixels() zu tun, aber die Leistung dieser Anrufe ist ziemlich groß.OpenGL Invert Framebuffer Pixel

Grundsätzlich, was ich versuche zu tun ist eine invertierte Farbe Fadenkreuz, die immer sichtbar ist, egal was dahinter steckt. Zum Beispiel hätte ich eine beliebige Alphamasken-Bitmap oder -Textur, würde es ohne Tiefenprüfung rendern, nachdem die Szene gezeichnet wurde, und alle Bildpufferpixel unter den maskierten (vollen Alpha) Pixeln der Textur würden invertiert werden.

Ich habe versucht, dies mit einer Textur zu tun, aber ich bekomme einige seltsame Ergebnisse, auch alle Mischoptionen, die ich immer noch verwirrend finde.

Antwort

7

Geben Sie so etwas wie this einen Versuch:

glEnable(GL_COLOR_LOGIC_OP); 
glLogicOp(GL_XOR); 
// render geometry 
glDisable(GL_COLOR_LOGIC_OP); 
+0

Dies ist der normale Weg ist, es zu tun. – DJClayworth

2

wie etwa:

glEnable (GL_BLEND); 
glBlend (GL_ONE_MINUS_DST_COLOR, GL_ZERO); 
+0

glBlend sollte glBlendFunc sein, nein? –