读取RenderTarget像素

	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);

猜你喜欢

转载自blog.csdn.net/SUKHOI27SMK/article/details/82664149
今日推荐