ReadSurfaceData issue on Vulkan

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,

1 Like