2010-04-17 12 views
5

Mi chiedevo se il modo migliore per invertire i pixel di colore nel frame buffer sia. So che è possibile fare con glReadPixels() e glDrawPixels() ma il colpo di prestazioni di quelle chiamate è piuttosto grande.opengl inverted framebuffer pixels

Fondamentalmente, quello che sto cercando di fare è avere un mirino a colori invertiti che è sempre visibile, non importa cosa ci sia dietro. Per esempio, avrei una bitmap o texture alfa mask arbitraria, renderla rendering senza test di profondità dopo che la scena è stata disegnata, e tutti i pixel del frame buffer sotto i pixel mascherati (alfa pieno) della texture sarebbero invertiti.

Ho cercato di farlo con una texture, ma sto ottenendo alcuni risultati strani, anche tutte le opzioni di fusione che trovo ancora confuse.

risposta

7

Dare qualcosa come this una prova:

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

Questo è il modo normale di farlo. – DJClayworth

2

come circa:

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

glBlend dovrebbe essere glBlendFunc, no? –

Problemi correlati