Hi,

I read back my rendered images using alternating PBOs. Although I render to a RGBA (BGRA) renderbuffer, I need an 8-bit RGB image in the end.

I thought this was easy, I only need to use GL_BGR_EXT instead of GL_BGRA_EXT in the glReadPixels call like this:

glReadPixels(0,0,XRES,YRES,GL_BGR_EXT,GL_UNSIGNED_ BYTE,0);

It works, but my great surprise, it can slow down my render thread quite considerably. Sometimes CPU utilization on that particular core can get above 50% even though there is not a lot going on. Once I change GL_BGR_EXT back to GL_BGRA_EXT, that ~50% falls back to something like 2%.

Is it possible that reading back in a similar but different format than what the buffer originally was defined is such a great deal? Am I better off writing my own code that would convert from BGRA to BGR?