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

2023-11-09

//通过路径获取单张图片,转为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;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚幻引擎(UE)C++,加载读取本地路径图片、Texture2D 的相关文章

  • Unity --- Vector3类的API讲解

    1 Vector3中的静态变量是相对于世界坐标系的还是相对于自身坐标系呢 我们创建的Vector3类对象同理 答 这取决我们将创建的Vector3类对象 通过Vector3调用的静态变量传给了哪一个引用 如果是传给了positon的话 则该
  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体 遇到的问题描述 解决方式 Font Asset Creator 面板扩展
  • Unity的三级排序层级渲染Layer,sorting layer,order in layer

    一 前言 Unity游戏开发中 模型 界面 特效等等 需要规划好层的概念 涉及到摄像机 Camera 画布 Canvas Shader等相关内容 Unity大致按照三级排序进行层级渲染 Camera的Depth CullingMask gt
  • Unity卡死情况

    今天遇到了Unity点击播放后卡死 用任务管理器强行关闭后重开 打不开项目的情况 解决方案 检查USB接口设备 有些设备可能会影响Unity工程启动 比如VR头盔
  • 跨平台游戏引擎 Axmol-2.0.0 正式发布

    下载 https github com axmolengine axmol releases tag v2 0 0 更新日志 添加实验性的 WebAssembly 构建支持 WebGL 2 0 由 nowasm 贡献 已知问题 WebGL
  • UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 遇到的问题 二 操作步骤 前言 UE4 Unreal Engine4 在蒙太奇动画中添加音频轨道通知 我们想在某一帧动画中添加声音 比如我们想在动画的第13帧这里添加音效 一 遇到
  • Unity项目资源加载管理简易框架(Resource)

    文章目录 一 背景 二 思路概述 三 具体实现代码及其思路梳理 1 资源路径 2 资源管理 3 资源加载 4 资源管理 四 说明 一 背景 在Unity的轻量型项目中如果对优化没有特别搞得要求 如果需要用到Resource Load这个接口
  • 【cc3.x】顶点着色器和片元着色器小记

    cc3 x cocos creator3 x 的着色器demo有点少 而且讲的不是很清晰 我这种业余自学小白学的真的很艰难 不过好赖算是啃的差不多了 所以有了这则小记 权当备忘录了 首先顶点着色器 上一段代码 CCProgram vs pr
  • 一些个人常用的网站网址

    一些个人常用的网站网址 GitHub https github com Gitee https gitee com 1 书栈网 https www bookstack cn explore cid 27 tab popular 2 Unit
  • 【Unity2d】带你制作一款类似于金山打字的小游戏

    博主大概08年开始接触电脑游戏 当时玩的是我哥的电脑 那时候家里没网 只可以玩电脑上自带的单机游戏 比如扫雷 蜘蛛纸牌等等 当然还有红色警戒 冰封王座 星际争霸 帝国崛起等等 这些大概是我哥当时在大学下载的 也是那个时候对游戏充满了兴趣 记
  • 游戏引擎:打造梦幻游戏世界的秘密武器

    介绍 游戏引擎是游戏开发中不可或缺的工具 它为开发者提供了构建游戏世界所需的各种功能和工具 本文将介绍游戏引擎的概念 使用方法以及一个完整的游戏项目示例 游戏引擎的概念 游戏引擎是一种软件框架 它提供了游戏开发所需的各种功能和工具 包括图形
  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • 【UE】在控件蓝图中通过时间轴控制材质参数变化

    效果 步骤 1 新建一个控件蓝图和一个材质 2 打开材质 设置材质域为用户界面 混合模式设置为 半透明 在材质图表中添加两个参数来控制材质的颜色和不透明度 3 对材质创建材质实例 4 打开控件蓝图 在画布面板中添加一个图像控件 将刚才创建的

随机推荐

  • 糖尿病遗传风险检测挑战赛-权重融合

    权重融合 糖尿病遗传风险检测挑战赛 模型融合的内容还挺多的 我只是尝试stacking这种 权重融合也是后期上分的一种手段 基于上一篇 调参之后的进行权重融合 我用的是lightgbm xgboost CatBoostRegressor 这
  • 安卓手机ROOT和刷机基本操作——以红米Note7刷安卓原生系统并Root为例

    文章目录 前言 一 简介 1 安卓权限 2 安卓分区 Boot分区 System分区 Data分区 Cache分区 Recovery分区 3 Fastboot 二 前置准备 1 Android SDK 工具 2 解BL锁 三 ROOT 1
  • CNN简单实战:PyTorch搭建CNN对猫狗图片进行分类

    在上一篇文章 CNN训练前的准备 PyTorch处理自己的图像数据 Dataset和Dataloader 大致介绍了怎么利用pytorch把猫狗图片处理成CNN需要的数据 今天就用该数据对自己定义的CNN模型进行训练及测试 首先导入需要的包
  • 自学python(3):python处理各种标注文件的格式转换(json,txt,xml相互转化)

    目录 txt转xml xml转txt json转xml xml转json txt转xml coding utf 8 author HXY 2020 4 17 该脚本用于visdrone数据处理 将annatations文件夹中的txt标签文
  • Fiddler快速入门

    Fiddler是一个免费 强大 跨平台的HTTP抓包工具 Wireshark也是一个强大的抓包工具 不过Wireshark是一个通用的抓包工具 主要精力放在各种协议上了 针对HTTP的特定功能较少 所以如果你需要研究HTTP包的话 Fidd
  • 基于小波变换的网络流量的建模与预测

    网络流量能直接反映网络性能的好坏 网络流量的建模与预测对于大规模网络的规划设计 网络资源管理以及用户行为的调节等方面都具有积极意义 本课题首先介绍了网络流量的特征 在分析了小波理论的基础上提出了一种基于小波变换的网络流量预测模型 该模型采用
  • unity animator循环播放判断当前动画是否播放完毕

    记录下 直接上代码 主要俩个api animator GetCurrentAnimatorStateInfo 0 IsName name animator GetCurrentAnimatorStateInfo 0 normalizedTi
  • error: #130: expected a “{“ 的问题

    keil编译中经常会有此类问题 一般都是因为某个 号未打 导致后面全错 所有可以从依赖方面入手 从第一个问题开始向前找之前的include文件 有时候还会出现有些定义undefine 可以试试看include h重新排序 将依赖的defin
  • docker容器commit之后变得非常大的原因及解决办法

    一 原因 原因就是直接在容器里进行了很多操作 比如apt update install pip install等等 而没有使用Dockerfile来构建镜像 docker镜像的构建方式是以层的概念来实现的 在容器内所做的所有操作都会在构建镜
  • “我曾认为开源是有钱闲人的游戏,不要试图快速从中变现”

    作者 宋林飞 责编 何苗 受访嘉宾 卫剑钒 出品 CSDN ID CSDNnews 关注开源的人一定对 大教堂与集市 非常熟悉 随着这本书的中文版在国内发行 译者卫剑钒逐渐被更多的人熟知 而今 开源圈的朋友们亲切地称他卫Sir 书中 原作E
  • 关于SSM框架的一些问题以及解决方法

    目录 前言 一 web的蓝色小点消失 二 关于创建maven的方式 1 用最简单的方式创建 2 用最干净的方式创建 三 关于上传的文件重新部署tomcat后消失的问题 四 关于css文件和js文件在ssm项目无法解析的问题 五 关于myba
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

    赛道 B 北京移动用户体验影响因素研究 移动通信技术飞速发展 给人们带来了极大便利 人们也越来越离不开移动通信技术带来的各种便捷 随着网络不断的建设 网络覆盖越来越完善 各个移动运营商 越来越重视客户的网络使用体验 从而进一步提升网络服务质
  • Linux代码比对工具meld

    Ubuntu20 04下安装meld的时候报错 root PC apt get install meld 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 您也许需要运行 apt fix broken insta
  • 一本应届计算机混子春招复盘

    回首四年大学摆烂生活 什么都没做 大四上学期去参加10个人小公司实习错过秋招 大四下来卷春招 目前参加过一次群面 两次二面 群面 海天集团软件开发岗 2面3 问的问题还算简单 数据库索引B 树 链表 和我一起面试的都是考研失败者 我自认为答
  • 四个步骤买阿里云国际版

    本文是分享 不是广告 未添加联系方式 首先 本方法肯定是可行的 如果你有信用卡也可以网上搜索绑卡教程注册 本方法是不用你绑定PayPal与信用卡的版本 整个过程非常的简单 所以在开始之前 你务必要准备好下面这几样东西 1 一个用来注册用的邮
  • ruoyi Vue 文件上传组件 2.0

    简化了在页面的使用难度 在每次加载时监控 ids 是否变化 监测到变化就重新从后台通过ids获取数据 文件上传组件完整代码
  • Run-Time Check Failure #2 - Stack around the variable 's' was corrupted.

    https www cnblogs com ambdyx p 11779566 html 建议debug查看内存申请大小 数据大小 以及数组大小 对指针和引用进行甄别修改
  • 如何在CentOS 8上安装PostgreSQL

    PostgreSQL或Postgres是开放源代码的通用对象关系数据库管理系统 具有许多高级功能 使您可以构建容错环境或复杂的应用程序 在本指南中 我们将讨论如何在CentOS 8上安装PostgreSQL数据库服务器 在选择要安装的版本之
  • 【华为OD机试真题2023B卷 JS】观看文艺汇演问题

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 观看文艺汇演问题 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为庆祝中国共产党成立100周年 某公园将举行多场文艺汇演 很多演出都是同时进行 一个人只能同时观看一场
  • 虚幻引擎(UE)C++,加载读取本地路径图片、Texture2D

    通过路径获取单张图片 转为Texture2D UFUNCTION BlueprintCallable Category Image static UTexture2D LoadTexture2D const FString ImagePat