【UE4】 Texture2D 数据读写 您所在的位置:网站首页 uint8_t的头文件 【UE4】 Texture2D 数据读写

【UE4】 Texture2D 数据读写

2023-04-20 08:42| 来源: 网络整理| 查看: 265

原文地址

方式一

// https://www.cnblogs.com/shiroe/p/15438401.html void AActor_Assignment2::TextureFromImage_Internal( const TArray& SrcData, const bool UseAlpha) { const int32 SrcWidth = CanvasSize.X; const int32 SrcHeight = CanvasSize.Y; // Create the texture T_Result = UTexture2D::CreateTransient(CanvasSize.X, CanvasSize.Y, PF_B8G8R8A8); // Lock the texture so it can be modified uint8* MipData = static_cast(T_Result->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE)); // Create base mip. uint8* DestPtr = NULL; const FColor* SrcPtr = NULL; for (int32 y = 0; y < SrcHeight; y++) { DestPtr = &MipData[(SrcHeight - 1 - y) * SrcWidth * sizeof(FColor)]; SrcPtr = const_cast(&SrcData[(SrcHeight - 1 - y) * SrcWidth]); for (int32 x = 0; x < SrcWidth; x++) { *DestPtr++ = SrcPtr->B; *DestPtr++ = SrcPtr->G; *DestPtr++ = SrcPtr->R; if (UseAlpha) { *DestPtr++ = SrcPtr->A; } else { *DestPtr++ = 0xFF; } SrcPtr++; } } // Unlock the texture T_Result->PlatformData->Mips[0].BulkData.Unlock(); T_Result->UpdateResource(); }

方式二

// https://www.cnblogs.com/shiroe/p/15438401.html void AHw7_Main::CreateTexture() { T_Result = UTexture2D::CreateTransient(width, height); FTexture2DMipMap& Mip = T_Result->PlatformData->Mips[0]; FColor* Data = (FColor*)Mip.BulkData.Lock(LOCK_READ_WRITE); FMemory::Memzero(Data, width * height * sizeof(FColor)); Mip.BulkData.Unlock(); T_Result->UpdateResource(); return; //T_Result->UpdateResource(); }

方式三 UpdateTextureRegions这个函数貌似不适合创建,适合更新

VideoTextureColor = UTexture2D::CreateTransient(640, 480, PF_B8G8R8A8); VideoTextureColor->UpdateResource(); FUpdateTextureRegion2D* RegionColor = new FUpdateTextureRegion2D(0, 0, 0, 0, 640, 480); //FUpdateTextureRegionData* ColorRegionData = new FUpdateTextureRegionsData; // Populate the texture with blue color TArray PixelDepthData; PixelDepthData.Init(FColor(255, 255, 0, 255), 640 * 480); VideoTextureColor->UpdateTextureRegions( (int32)0, (uint32)1, RegionColor, (uint32)(4 * 640), (uint32)4, (uint8*)PixelDepthData.GetData() ); VideoTextureColor->LODGroup = TEXTUREGROUP_Pixels2D;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有