ue4 代码创建贴图

新收到需求 需要程序化随机创建一张贴图 实现后写此博文记录

用到UTexture2D FImageUtils FFileHelper几个类

#include "Runtime/Core/Public/PixelFormat.h"
#include "Runtime/Core/Public/Math/RandomStream.h"
#include "time.h"
#include "Runtime/Engine/Public/ImageUtils.h"
#include "Runtime/Core/Public/Misc/FileHelper.h"#include "Runtime/Engine/Classes/Engine/Texture2D.h"

UTexture2D* UMyTextureSave::CreateImage() {
//创建一 张贴图
    UTexture2D* tex= UTexture2D::CreateTransient(512, 512, PF_B8G8R8A8);
//随机数种子
    srand((int)time(0));
//颜色数组 for循环根据高度和宽度写入颜色
    TArray<FColor> cs;
    for (size_t i = 0; i < 512; i++)
    {
        for (size_t j = 0; j < 512; j++)
        {
            FColor c(rand() % 255, rand() % 255, rand() % 255);
            cs.Add(c);
        }
    }
    TArray<uint8> compressed;
    //压缩颜色数据为uint8数组数据
    FImageUtils::CompressImageArray(512, 512, cs, compressed);
    //设定存储路径
    FString s = FPaths::ProjectSavedDir() + TEXT("/test.png");
    TCHAR* t = s.GetCharArray().GetData();
    //保存为图片文件
    FFileHelper::SaveArrayToFile(compressed, t);
    //获取并锁住贴图颜色缓冲区 模式为可写 
    FColor* colors= static_cast<FColor*>( tex->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE));
    //拷贝颜色数据到贴图
    FMemory::Memcpy(colors, cs.GetData(), sizeof(FColor)* cs.Num());
    //解锁
    tex->PlatformData->Mips[0].BulkData.Unlock();
    //更新贴图
    tex->UpdateResource();
    return tex;
}

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值