pushrbx icon

Pixel copy Opengl DIB

pushrbx | PRO | 04/19/13 09:31:20 PM UTC | 0 ⭐ | 350 👁️ | Never ⏰ | []
C++ |

750 B

|

None

|

0 👍

/

0 👎

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