【发布时间】:2020-04-25 13:06:12
【问题描述】:
我一直在尝试,但无法使用此代码进行操作
UTextureRenderTarget2D *renderTarget; // In header
void UMyActorComponent::BeginPlay()
{
Super::BeginPlay();
texture = UTexture2D::CreateTransient(1, 1);
FTexture2DMipMap& Mip = texture->PlatformData->Mips[0];
void* Data = Mip.BulkData.Lock(LOCK_READ_WRITE);
uint8 red[4] = { 255, 255, 255, 255 };
FMemory::Memcpy(Data, &red, sizeof(red));
Mip.BulkData.Unlock();
texture->UpdateResource();
renderTarget->UpdateTexture2D(texture, TSF_BGRA8);
}
我至少知道我有正确的 renderTarget 句柄,因为我已经能够清除渲染目标。我可能会遗漏一些简单的东西,感谢您的帮助。
【问题讨论】:
-
如果你在
renderTarget->UpdateTexture2D(texture, TSF_BGRA8);之后调用renderTarget->UpdateResourceImmediate(false);会发生什么吗? -
@Ruzihm 在挖掘源代码后,我发现 UpdateTexture2D 完全包裹在我读过的 #if WITH_EDITOR 块中,这意味着它在您的游戏中没有任何作用。虽然我注意到资源在函数结束时没有更新,但你非常接近,但我想这并不重要。当我弄清楚时,我会发布我的解决方案。
标签: c++ unreal-engine4