UTexture2D 和 uint8 转换

这篇博客介绍了如何在UE5中将UTexture2D对象转换为TArray<uint8>数组,以及如何将uint8数组转换回UTexture2D。提供了两个关键函数Texture2DToArrUint8和ArrUint8ToTexture2D的实现,涉及纹理平台数据的读取和写入操作。
摘要由CSDN通过智能技术生成
Texture2DToArrUint8

void A::Texture2DToArrUint8(UTexture2D* Texture2D, TArray<uint8>& Pixels, int& SizeX, int& SizeY)
{
   if (Texture2D == nullptr) { return; }
   
   FTexturePlatformData* TexturePlatformData = Texture2D->GetPlatformData();
   if (TexturePlatformData == nullptr || TexturePlatformData->Mips.Num() == 0) { return; }

   Pixels.Empty();
   SizeX = TexturePlatformData->SizeX;
   SizeY = TexturePlatformData->SizeY;
   FByteBulkData& BulkData = TexturePlatformData->Mips[0].BulkData;
   uint8* Data = (uint8*)BulkData.Lock(LOCK_READ_ONLY);
   Pixels.Append(Data, BulkData.GetBulkDataSize());
   BulkData.Unlock();
}

ArrUint8ToTexture2D

if (Pixels.Num() == static_cast<int64>(SizeX) * static_cast<int64>(SizeY) * static_cast<int64>(GPixelFormats[PF_B8G8R8A8].BlockBytes))
{
   UTexture2D* NewTexture = UTexture2D::CreateTransient(SizeX, SizeY, PF_B8G8R8A8);
   uint8*
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值