ENQUEUE压指令到渲染线程获取贴图数据
void GetTexturePixels(FTexture2DRHIRef Texture, TArray<FColor>& OutPixels)
{
struct FReadSurfaceContext
{
FTexture2DRHIRef Texture;
TArray<FColor>* OutData;
FIntRect Rect;
FReadSurfaceDataFlags Flags;
};
OutPixels.Reset();
FReadSurfaceContext ReadSurfaceContext =
{
Texture,
&OutPixels,
FIntRect(0, 0, Texture->GetSizeXY().X, Texture->GetSizeXY().Y),
FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX)
};
ENQUEUE_UNIQUE_RENDER_COMMAND_ONEPARAMETER(
ReadSurfaceCommand,
FReadSurfaceContext, Context, ReadSurfaceContext,
{
RHICmdList.ReadSurfaceData(
Context.Texture,
Context.Rect,
*Context.OutData,
Context.Flags
);
});
FlushRenderingCommands();
}