如何在 C++ 中更新 UTextureRenderTarget2D?
How do you update a UTextureRenderTarget2D in C++?
我被引用了@J。 Rehbein 的询问。
How do you update a UTextureRenderTarget2D dynamically in C++?
并使用public个模块(“Core”、“CoreUObject”、“Engine”、“InputCore”、“UMG”、“GameplayTasks”、“Landscape”、“RHI”、“RenderCore”) .
为什么打印断言失败日志?
如何解决断言失败的问题?
请各位老师
void AWorldCreator::BeginPlay()
{
Super::BeginPlay();
if (RenderTarget != nullptr) {
RenderTarget->InitCustomFormat(Width, Height, PF_B8G8R8A8, true);
auto region = FUpdateTextureRegion2D(0, 0, 0, 0, Width, Height);
FTexture2DRHIRef TextureRHI = RenderTarget->GameThread_GetRenderTargetResource()->GetRenderTargetTexture();
ENQUEUE_RENDER_COMMAND(UpdateTextureRegionsData)(
[=](FRHICommandListImmediate& RHICmdList)
{
check(TextureRHI.IsValid()); // Assertion failed line
});
}
}
Texture->UpdateResource();
Texture->UpdateResourceImmediate(false);
我想更改 URenderTargetTexture2D 的纹理。我试过如何使用 2_DrawMaterial。
我对如何将 UMaterialInstanceDynamic 转换为 UMaterialInterface 感到困难。
所以,接下来尝试了如何使用ENQUEUE_RENDER_COMMAND。又被挡住了。
所以我发布了一个问题。
抱歉并感谢大家阅读我尴尬(奇怪?)的问题。
...
我在没有 ENQUEUE_RENDER_COMMAND 的情况下成功更新了 URenderTargetTexture2D。
我将 UMaterialInstanceDynamic 转换为 UMaterialInterface,想到了 UStaticMeshComponent。
我使用 UStaticMeshComponent 的函数(GetMaterial、SetMaterial)。
UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(Material, GetWorld());
...
StaticMeshComponent->SetMaterial(0, DynamicMaterial);
...
canvas->K2_DrawMaterial(StaticMeshComponent->GetMaterial(0), Position, Size, CoordinatePosition);
谢谢。
我被引用了@J。 Rehbein 的询问。 How do you update a UTextureRenderTarget2D dynamically in C++?
并使用public个模块(“Core”、“CoreUObject”、“Engine”、“InputCore”、“UMG”、“GameplayTasks”、“Landscape”、“RHI”、“RenderCore”) .
为什么打印断言失败日志?
如何解决断言失败的问题?
请各位老师
void AWorldCreator::BeginPlay()
{
Super::BeginPlay();
if (RenderTarget != nullptr) {
RenderTarget->InitCustomFormat(Width, Height, PF_B8G8R8A8, true);
auto region = FUpdateTextureRegion2D(0, 0, 0, 0, Width, Height);
FTexture2DRHIRef TextureRHI = RenderTarget->GameThread_GetRenderTargetResource()->GetRenderTargetTexture();
ENQUEUE_RENDER_COMMAND(UpdateTextureRegionsData)(
[=](FRHICommandListImmediate& RHICmdList)
{
check(TextureRHI.IsValid()); // Assertion failed line
});
}
}
Texture->UpdateResource();
Texture->UpdateResourceImmediate(false);
我想更改 URenderTargetTexture2D 的纹理。我试过如何使用 2_DrawMaterial。 我对如何将 UMaterialInstanceDynamic 转换为 UMaterialInterface 感到困难。 所以,接下来尝试了如何使用ENQUEUE_RENDER_COMMAND。又被挡住了。 所以我发布了一个问题。 抱歉并感谢大家阅读我尴尬(奇怪?)的问题。
...
我在没有 ENQUEUE_RENDER_COMMAND 的情况下成功更新了 URenderTargetTexture2D。 我将 UMaterialInstanceDynamic 转换为 UMaterialInterface,想到了 UStaticMeshComponent。 我使用 UStaticMeshComponent 的函数(GetMaterial、SetMaterial)。
UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(Material, GetWorld());
...
StaticMeshComponent->SetMaterial(0, DynamicMaterial);
...
canvas->K2_DrawMaterial(StaticMeshComponent->GetMaterial(0), Position, Size, CoordinatePosition);
谢谢。