FTextureRenderTargetResource* RTResource = m_textureRenderTarget->GameThread_GetRenderTargetResource();
int width = m_textureRenderTarget->GetSurfaceWidth();
int height = m_textureRenderTarget->GetSurfaceHeight();
FReadSurfaceDataFlags ReadPixelFlags(RCM_UNorm);
ReadPixelFlags.SetLinearToGamma(true);
TArray<FColor> pixel;
RTResource->ReadPixels(pixel, ReadPixelFlags);
int AlignmentWidth = width * 3;
while (AlignmentWidth % 4 != 0)
++AlignmentWidth;
int align = AlignmentWidth - width * 3;
int n = 0;
for (int i = height - 1; i > 0; i--)
{
for (int j = 0; j < width; j++)
{
m_buf[n++] = pixel[i * width + j].B;
m_buf[n++] = pixel[i * width + j].G;
m_buf[n++] = pixel[i * width + j].R;
}
for (int k = 0; k < align; k++)
{
m_buf[n++] = 0;
}
}
grabBmp(width, height, 0, m_buf);