I have managed to get it working:
GL.BindBuffer(BufferTarget.PixelUnpackBuffer, bufferID);
Color color = Color.Black;
unsafe
{
byte* basePtr = (byte*)GL.MapBuffer(BufferTarget.PixelUnpackBuffer, BufferAccess.ReadOnly);
byte* pixPtr = basePtr;
for(int y = 0; y < yRes; y++)
{
int flipY = yRes-1-y; //used to vertically flip the output
for(int x = 0; x < xRes; x++)
{
result[flipY,x] = Color.FromArgb((int)pixPtr[3], (int)pixPtr[0], (int)pixPtr[1], (int)pixPtr[2]);
pixPtr += 4;
}
}
GL.UnmapBuffer(BufferTarget.PixelUnpackBuffer);
}
GL.BindBuffer(BufferTarget.PixelUnpackBuffer,0);