UE4(虚幻4)预算上的纹理流送池(texture streaming poor over)报警解决方法

Posted 妙为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4(虚幻4)预算上的纹理流送池(texture streaming poor over)报警解决方法相关的知识,希望对你有一定的参考价值。

UE4系列文章目录

文章目录

前言

我们在运行UE4程序时会遇到警告:预算上的纹理流送池,虽然不影响程序正常运行,但就是看着挺刺眼的。有强迫症的我是在忍不哈,于是决定灭了他_

一、第一种方法:修改配置文件(不得行)

问了一下度娘:
纹理流送是运行时将纹理加载和卸载进出内存的系统,当场景中的纹理流送超过默认值将会产生警告,解决方法有两种:

1.通过命令行修改流送池单位;

2.通过修改\\Engine\\Config\\ConsoleVariables.ini ,修改流送池单位:
; Texture Streaming Pool Value
r.Streaming.PoolSize=2000

但是在我机器上的ConsoleVariables.ini文件里面没有找到上面的字段

二、第二种方法:项目设置(可行)

1.设置->项目设置
2.引擎->渲染->纹理->纹理流送:取消勾选

虚幻引擎(UE)C++,加载读取本地路径图片Texture2D

//通过路径获取单张图片,转为Texture2D

UFUNCTION(BlueprintCallable, Category = "Image")

static UTexture2D* LoadTexture2D(const FString ImagePath);

//获取指定路径下的所以有图片的名称

UFUNCTION(BlueprintCallable, Category = "Image")

static TArray GetFolderFiles(FString ImagePath);

//将指定路径下的所有图片转为Texture2D

UFUNCTION(BlueprintCallable, Category = "Image")

static TArray GetAllImageFromFiles(FString ImagePath);

//判断图片类型

static TSharedPtrGetImageWrapperByExtention(const FString ImagePath);

UTexture2D* ULoadImageToTexture::LoadTexture2D(const FString ImagePath)

UTexture2D* Texture = nullptr;

if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*ImagePath))

return nullptr;

TArray RawFileData;

if (!FFileHelper::LoadFileToArray(RawFileData, *ImagePath))

return nullptr;

TSharedPtr ImageWrapper = GetImageWrapperByExtention(ImagePath);

if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))

TArray UncompressedRGBBA;

if (ImageWrapper->GetRaw(ERGBFormat::RGBA, 8, UncompressedRGBBA))

Texture = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_R8G8B8A8);

if (Texture != nullptr)

void* TextureData = Texture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);

FMemory::Memcpy(TextureData, UncompressedRGBBA.GetData(), UncompressedRGBBA.Num());

Texture->PlatformData->Mips[0].BulkData.Unlock();

Texture->UpdateResource();

return Texture;

===============================================================================

TArray ULoadImageToTexture::GetFolderFiles(FString ImagePath)

TArrayfiles;

FPaths::NormalizeDirectoryName(ImagePath);

IFileManager& FileManager = IFileManager::Get();

FString FinalPath = ImagePath / TEXT("*");

FileManager.FindFiles(files, *FinalPath, true, true);

return files;

===============================================================================

TArray ULoadImageToTexture::GetAllImageFromFiles(FString ImagePath)

TArray ImgPath = GetFolderFiles(ImagePath);

TArrayTexture2DArr;

for (auto path : ImgPath)

UTexture2D* Texture2D = LoadTexture2D(ImagePath + "/" + path);

Texture2DArr.Add(Texture2D);

return Texture2DArr;

===============================================================================

TSharedPtr ULoadImageToTexture::GetImageWrapperByExtention(const FString ImagePath)

IImageWrapperModule& module = FModuleManager::LoadModuleChecked(FName("ImageWrapper"));

if (ImagePath.EndsWith(".png"))

return module.CreateImageWrapper(EImageFormat::PNG);

if (ImagePath.EndsWith(".jpg") || ImagePath.EndsWith("jpeg"))

return module.CreateImageWrapper(EImageFormat::JPEG);

return nullptr;

以上是关于UE4(虚幻4)预算上的纹理流送池(texture streaming poor over)报警解决方法的主要内容,如果未能解决你的问题,请参考以下文章

UE4运行时虚拟纹理教程RVT

UE4运行时虚拟纹理教程RVT

UE4 体积纹理(volume texture)自定义并通过蓝图实现

UE4 从 C++ 创建纹理

虚幻UE4中移动端水材质的设置

UE4实现纹理缩放(将纹理坐标进行缩放)