void CopyPBufferToImage(int width, int height)
{
// Copy the contents of the framebuffer - which in our case is our pixel buffer -
// to our bitmap image (dummy target) in local system memory. Notice that we also need
// to invert the pbuffer's pixel data since OpenGL by default orients the
// bitmap image bottom up. Our Windows DIB wrapper expects images to be
// top down in orientation.
static BYTE *pixels = new BYTE[width * height * 4];
memset(pixels, 0, width * height * 4);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, width, height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels);
for (int i = 0; i < height; ++i)
{
memcpy(&m_img.pPixels[m_img.pitch * i],
&pixels[((height - 1) - i) * (width * 4)],
width * 4);
}
}
Comments