Thanks !!!
It was a little more complicated but indeed NewObject effects were inexplicable. I use Kismet API helper to manipulate RenderTarget. (Thanks to this tutorial to show this api Render Targets for Shaders without the Render Target Camera Overhead).
APaysanPawn::APaysanPawn()
{
...
// Allocated capture WITHOUT RenderTarget
Capture = CreateDefaultSubobject<USceneCaptureComponent2D> (TEXT("SceneCapture"));
Capture->CaptureSource = SCS_FinalColorLDR;
Capture->SetupAttachment(CameraBoom);
...
}
void APaysanPawn::OnConstruction(const FTransform& Transform)
{
Super::OnConstruction(Transform);
// Build RenderTarget
_textureRender = UKismetRenderingLibrary::CreateRenderTarget2D(GetWorld(), 512, 512, RTF_RGBA8, FColor::Magenta);
check(_textureRender);
_textureRender->UpdateResourceImmediate();
// Set to capture system
Capture->TextureTarget = _textureRender;
}
TArray64<uint8> APaysanPawn::dumpCapture() const
{
check(Capture != nullptr && _textureRender != nullptr);
_textureRender->UpdateResourceImmediate(false);
TArray64<uint8> CompressedBitmap;
FImage image;
if (FImageUtils::GetRenderTargetImage(_textureRender, image))
{
if (!FImageUtils::CompressImage(CompressedBitmap, TEXT("jpg"), image))
{
verifyf(false, TEXT("Can't compress render target image to jpg"));
}
}
else
{
verifyf(false, TEXT("Can't read render target image"));
}
return CompressedBitmap;
}
And the photo finish