Hi,
I’m trying to capture a coloured image from a camera using RHILockTexture2D
like this -
FRHITexture2D *fast_cap_texture = fast_rt_resource_->TextureRHI->GetTexture2D();
EPixelFormat pixelFormat = fast_cap_texture->GetFormat();
uint32 width = fast_cap_texture->GetSizeX();
uint32 height = fast_cap_texture->GetSizeY();
uint32 stride;
auto *src = (const unsigned char*)RHILockTexture2D(fast_cap_texture, 0, RLM_ReadOnly, stride, false);
This is working correctly on Windows, however, on Linux, it’s crashing due to an assert (trace is here - Assertion failed: LockMode == RLM_WriteOnly [File:/home/rajat/UnrealEngine/UE_4. - Pastebin.com, it’s for 4.25 but similar for 4.24 as well)
I tried commenting out the assert in the Engine code, and it didn’t crash, however, I’m getting garbage data. Using RLM_WriteOnly
rather than changing the Engine code gives garbage data on both Win & Linux
RLM_ReadOnly
works correctly on Win & with OpenGL on Linux (-opengl
on cmdline) gives correct data. Crash is happening on 4.25 as well. I’m not sure but seems like a bug in Vulkan on Linux.
Background: Working on a UE4 based simulator AirSim, entire code - Faster Image Capture by rajat2004 · Pull Request #2713 · microsoft/AirSim · GitHub
This is my first time posting a question here, so please let me know if any info is required, etc. Any comments or suggestions would be great!
Thanks!