Hello,
Currently I’m trying to save the camera image from a SceneCapture camera into a buffer and display it in Unreal. On Windows with DirectX this works wonderfully. Here is a part of the used code:
FTexture2DMipMap& Mip = texture->PlatformData->Mips[0];
void* Data = Mip.BulkData.Lock(LOCK_READ_WRITE);
ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER(
ReadSurfaceCommand,
const FTextureRenderTarget2DResource*, Resource, RenderResource,
void*, buffer, Data,
{
TArray<FColor> OutData;
FTextureRHIParamRef Texture = Resource->GetRenderTargetTexture();
RHICmdList.ReadSurfaceData(
Texture,
FIntRect(0, 0, 1024, 768),
OutData,
FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX)
);
FMemory::Memcpy(buffer, OutData.GetData(), (1024*768 * 4));
}
);
Mip.BulkData.Unlock();
texture->UpdateResource();
But when I switch to Vulkan on Windows (or in some cases Linux) the image stays black.
Does anyone have any idea why?
Best,