2010-04-17 16 views
5

Me preguntaba si la mejor forma de invertir los píxeles de color en el frame buffer es. Sé que es posible hacerlo con glReadPixels() y glDrawPixels(), pero el rendimiento de esas llamadas es bastante grande.opengl invert framebuffer pixels

Básicamente, lo que intento hacer es tener una cruz de color invertido que siempre esté visible sin importar lo que haya detrás. Por ejemplo, tendría un mapa de bits o textura de máscara alfa arbitraria, lo renderizaría sin una prueba de profundidad después de dibujar la escena, y se invertirían todos los píxeles del búfer de cuadros debajo de los píxeles enmascarados (alfa completa) de la textura.

He estado tratando de hacer esto con una textura, pero estoy obteniendo algunos resultados extraños, también todas las opciones de fusión que todavía encuentro confusas.

Respuesta

7

Dar algo así como una oportunidad this:

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

Esta es la manera normal de hacerlo. – DJClayworth

2

¿qué tal:

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

glBlend debería ser glBlendFunc, ¿no? –

Cuestiones relacionadas