SR

Size: a a a
SR
Е
UTexture2D* texture = UTexture2D::CreateTransient(frame.width, frame.height,EPixelFormat::PF_R8G8B8A8);
FTexture2DMipMap& Mip = texture->PlatformData->Mips[0];
void* Data = Mip.BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(Data, (void*)buffer, (frame.width * frame.height * 4));
Mip.BulkData.Unlock();
texture->UpdateResource();
return texture;
OnMyClassFrameDelegate.Broadcast(texture)
и код в принципе рабочий, кроме того что GC анриаловский не очищает память за этой текстуркой, и использование памяти где-то по 1гб/мин растёт неуклонно. Из фиксов нашел, что явный вызов CollectGarbage(RF_NoFlags,true)
помогает, но если его вызывать слишком часто то программа тупо зависает, в интернете не нашел почему, да и сам способ костыльный сильноLG
AS
UTexture2D* texture = UTexture2D::CreateTransient(frame.width, frame.height,EPixelFormat::PF_R8G8B8A8);
FTexture2DMipMap& Mip = texture->PlatformData->Mips[0];
void* Data = Mip.BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(Data, (void*)buffer, (frame.width * frame.height * 4));
Mip.BulkData.Unlock();
texture->UpdateResource();
return texture;
OnMyClassFrameDelegate.Broadcast(texture)
и код в принципе рабочий, кроме того что GC анриаловский не очищает память за этой текстуркой, и использование памяти где-то по 1гб/мин растёт неуклонно. Из фиксов нашел, что явный вызов CollectGarbage(RF_NoFlags,true)
помогает, но если его вызывать слишком часто то программа тупо зависает, в интернете не нашел почему, да и сам способ костыльный сильноAS
Е
AS
Е
Ac
AS
Е
Ac
CR
AS
Ac
Е
Е
AS
Е
CreateTransient
как-бы заложен смысл что эта текстура временная. Сейчас вот протестил код вообще без использования этой структуры, просто auto texture = CreateTransient(640,320);
texture->ConditionalBeginDestroy();
Е