- 博客(87)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT编译器Mingw调用VS编译库的解决方法
QT编译器Mingw调用VS编译库的调用方法将库函数替换成编译器看得懂的写法使用Depends.exe查看dll动态链文件reimp工具将.lib转成.a更换编译器最近工作需要,在QT下Mingw调用C++生成的库(.lib引导.dll),而QT 及 VS编译的库并不能互相调用,主要是MinGW和MSVC兼容度并不那么好,调整好lib正确的调用方法,在编译总是会提示error: undefine...
2019-06-29 15:32:42
7972
3
原创 UE4中性能优化和检测工具
Simpleperf可录制很深的CPU调用堆栈,可用于详细分析问题时间内的CPU代码执行情况,其将数据聚合,输出类似于Instrument TimeProfiler的形式,可以看到不同函数在一段时间内的贡献、占比情况,及调用次数,方便对其进行更有针对性的优化。优势:可长时间录制数据,数据在时间轴上以进程调度的形式展示,比较容易分析Game、RenderThread与WorkerThread的调度情况,从整体上结合时间连贯性对CPU瓶颈进行初步的定位。也可用于分析有规律的卡顿掉帧的情况。
2024-06-14 16:47:12
1669
原创 UE4 RPC进行网络同步
PS:引申:考虑到每一位客户端对该actor接管网络消息所有权都需要SetOwner,可能会导致网络延迟或安全性隐患,此处可以根据实际情况进行优化为通过经过玩家进行RPC同步,如由玩家的component发起。3、注意如果 RPC 是从Client调用并在Server上执行,客户端就必须拥有调用 RPC 的 Actor。所以在属性同步的地方设置此Actor的Owner,主要用于网络复制,玩家离开交互时Owner置空。服务端的处理:定义自定义事件,注意勾选同步范围,代表客户端同步在仅Server运行。
2024-06-11 20:42:02
470
转载 UE4中使用LLM内存统计工具
背景:控制台使用memreport -full可以得到详细的内存分析,如object的内存增长等,内存分析中包含了内存使用总量、asset的内存使用量、每个类的对象数与内存使用量等。Platform Tracker(ELLMTracker::Platform)的级别较低,记录从OS进行的所有分配。ELLMTag::Meshes 31.85 // Mesh 的顶点缓存,顶点索引缓存占用的内存,还有以下子类别 注:包括VertexBuffer相关在cpu这边的内存+估算的gpu内存。
2023-03-17 19:57:02
1893
1
原创 【计算机图形学(译)】 二、各种各样的数学
很多图形学只是将数学直接转换为代码。数学越简洁,得到的代码就越简洁;这本书的大部分内容都集中在如何使用正确的数学方法来完成这项工作。本章回顾了高中和大学数学中的各种工具,更多的是作为参考而不是作为教程。它可能看起来是一个大杂烩的主题,事实也的确如此:选择每个主题是因为它在“标准”数学课程中有点不同寻常,因为它在图形学中具有核心重要性,或者因为它通常不是从几何的角度来处理的。除了建立在这本书中使用的表示法的回顾,本章还强调了一些在标准本科课程中有时会跳过的点,如三角形上的重心坐标。本章并不打算对材料进行严格的
2023-02-07 21:07:22
613
原创 【计算机图形学(译)】 一、介绍
计算机图形学这个术语描述的是使用计算机来创建和操作图像。这本书介绍了算法和数学工具,可用于创建各种图像-现实的视觉效果,信息量大的技术插图,或好看的计算机动画。图形可以是二维或三维的;图像可以完全合成,也可以通过操纵照片来生成。这本书是关于基本的算法和数学,特别是那些用来产生三维物体和场景的合成图像。实际上,做计算机图形处理不可避免地需要了解特定的硬件、文件格式,通常还需要一两个图形API(见1.3节)。计算机图形学是一个快速发展的领域,因此该知识的具体内容是不断变化的。
2023-01-31 15:32:18
553
原创 UE4中对图片裁剪压缩
一:使用说明!对已拍照的FColor数据进行裁剪、压缩的操作,达到减少内存的效果:PC上原截图 约900+kbPC上裁剪截图 约200+kbPC上裁剪截图加转格式 约130kbPC上裁剪截图加转格式加压缩 约13kb下午提供示例接口,有需要可以进行参考修改二、调用示例:C侧:1、命令行方式截图2、根据尺寸保存压缩jpg3、通过传参路径和jpg/png 读取本地图片转换成UTexture2DLua侧:裁剪
2022-12-05 15:43:21
840
原创 UE4中抛体物理模拟UProjectileMovementComponent
背景:实现抛体运动,反弹效果,抛物曲线等功能通用实现可以使用spline绘制,物体按照下图接口可以根据时间更新位置为处理碰撞反弹等,本文考虑使用UProjectileMovementComponent相关 纯工具类组件 继承自UMovementComponentUE4官方文档:UProjectileMovementComponentProjectileMovementComponent会在tick期间更新另一个组件的位置,如果更新的Component开启了模拟物理,那么只有初始速度initial v
2022-12-05 15:22:17
1810
原创 UE4中对华为机型OnTouchMoved的处理
UE4中对华为机型OnTouchMoved的处理1.简述2.处理方法1.简述试想这样一个移动端的触摸场景:不要拖动该控件,仅松开手指/鼠标后处理,可不可行?其实很简单,按下时记录初始状态,移动时设置一个标记位,如果触发了移动,那么松开时根据这个标志位的情况来执行后续逻辑即可。类似这样:--处理按下事件function YourPanel:MouseButtonDown(InGeometry, InGestureEvent) self.m_NotMove = trueend--处理移动事件
2022-05-13 16:59:16
458
原创 UE4在windows下打包IOS(虚拟机)
UE4在windows下打包IOS1、简述2、搭建步骤3、报错1、简述之前整理过在linux下配置UE4的文章(linux下安装编译ue4问题报错的解决方法),今天梳理下在虚拟机上安装MacOS和UE4的步骤:UE4在打包时,仅蓝图的ios项目可以在windows进行编译及打包,而C++ ios项目必须在Mac机器进行编译打包。如果有Mac机器,直接打包也比较方便,如果没有或者懒得购置配置可以考虑使用虚拟机中安装macos的环境,优点是一台机器操作比较方便,如果内存充裕可以分配给虚拟机;当然缺点也明显
2022-01-27 14:05:32
2330
原创 2021年的小结
2021年的小结2021已然结束,回顾2021逐步把之前的flag一一清空,也更换了工作城市,生活可谓有得有失~ blog上通过私信能看出有更多技术人加入了自动驾驶的领域,希望解答能帮助有需要的人这里总结一下我作为技术人在2021的小结吧!从2021,还是在和UE4相爱相杀,今年主要参与了无人集群、无人驾驶的仿真,并步入移动端游戏行业,开始从事手机开发。主要技术还是UE4,C++,lua,客户端技术等,技术并无太多变化,但是行业发生了改变还需不断学习。今年在blog中记录的问题还是比较少,主要是在不
2022-01-06 17:23:16
1853
原创 设计模式总结
设计模式总结1、简述2、创建型模式2.1、工厂模式 Factory2.2、抽象工厂模式 Abstract Factory2.3、单例模式 Singleton2.4、建造者模式 Builder2.5、原型模式 Prototype3、结构型模式3.1、适配器模式 Adapter3.2、桥接模式 Bridge3.3、组合模式 Composite3.4、装饰器模式 Decorator3.5、外观模式 Facade3.6、享元模式 Flyweight3.7、代理模式 Proxy4、行为型模式4.1、职责链模式 Cha
2022-01-06 15:13:32
393
原创 UE4中使用PSO缓存优化
UE4中使用PSO缓存优化1、简述2、构建流程3、测试结果4.总结:1、简述在首次进入项目时,第一次加载新场景,或打开RT缩略图的卡顿;在第二次进入游戏后不会,实则是编译新着色器时项目出现的卡顿耗时,可以通过PSO缓存方式优化加载时间:UE 中的 PSO Caching 机制,用于预先记录和构建出运行时所使用的材质依赖的 Shader 信息,当项目首次使用这些 Shader 时,该列表可以加速 Shader 的加载 / 编译过程。PSO Caching 会把渲染状态、顶点声明、Primitive 类型
2021-12-17 11:34:39
8281
3
原创 UE4中三维几何总结——几何体
UE4中三维几何总结——几何体1、简述2、基本图元3、几何图元类型3.1 凸面网格Convex Mesh3.2 三角形网格Triangle Mesh3.3 高度场Height Field1、简述此文目的总结三维几何学基础——几何体,可以依此提纲做发散,不局限为UE4,任何三维领域系统均可以使用学习几何体用于构建刚体的形状,作为碰撞触发器,以及作为场景查询系统中的体积。还可以用于测试几何体之间的交集、光线投射以及将一个几何体扫描到另一个几何体。以下主要介绍几种常见的几何体模块。2、基本图元基本图元指
2021-12-09 17:42:21
2689
原创 UE4中触摸屏的拖动/缩放功能——lua实现
UE4中触摸屏的拖拽缩放功能——lua实现1.简述2.代码示例1.简述在移动端的触摸场景案例参考非常少,对于触摸的各种手势操作不好参考,然鹅这种需求对于各种应用或是需求最平常不过的了 ,这里仅针对UE4的开发提供几种思路:我们先来看下官方的推荐操作:1、根据设备DPI缩放规则的自动缩放 DPI缩放适应2、使用 Drag & Drop OperationDragAndDrop可以看出,官方对这类操作已经做了不少友好的封装供我们使用,可以参考以上应用到自己的项目中。以下示例演示了脚本
2021-11-23 21:30:53
5146
4
原创 UE4中使用Carla——Python与C++相互类型转换
UE4中使用Carla——开发添加自定义PythonAPI1.简述1.简述许多小伙伴私信问我Carla中PythonAPI的开发,新增修改的问题,这里补充UE4中使用Carla——开发添加自定义PythonAPI
2021-04-29 11:01:25
1475
6
原创 2020年的小结
2020年的小结2020对于大家是曲折的一年,但是也是充满机遇的一年!20年疫情后经济复苏,机会如雨后春笋,投资或互联网风潮又在兴起,不知大家有没有赶上。去年基本每天保持下班后学习到晚上10点半,这里总结一下我作为技术人在2020的小结吧!从博客内容上可以看出,我已经从业余全面转型UE4的开发了,但是技术是相同的,底层都是C++,所以日常的积累和底子学习还是非常重要的!多学习是没有坏处的,之前学习的每个技术,都在未来的某一天派上了用场。今年主要参与了无人机、无线电、飞行模拟器、集群、无人系统的视景仿真
2021-01-05 15:11:29
301
1
原创 linux下安装编译ue4问题报错的解决方法
linux docker下安装编译ue4问题报错的解决方法简述一般编译步骤问题解决步骤简述最近上linux服务器跑ue,现在跑到环境空白的docker里配置环境需要注意,大家可供参考环境:ubantu18,docker,ue4.22,Linux 下编译报错:Running UnrealHeaderTool CrashReportClientmake: [Makefile:212: CrashReportClient-Linux-Shipping] Error 1Makefile:608: re
2020-12-04 10:02:08
6295
10
原创 UE4 4.24-4.25安卓打包NDK问题
UE4 4.24-4.25安卓打包NDK问题在4.25版本中打包安卓,可能会出现NDK版本的问题:原因是4.25需要升级android的NDK,可以查看版本的官方解释知道了原因后,可以去安卓官网直接下载新的NDK即可:https://developer.android.google.cn/ndk/downloads/为了方便,这里免费提供了完整的安卓环境压缩包,自行下载即可:链接:https://pan.baidu.com/s/1mBeDUQN-Gk8oYtYgwq_ZmQ提取码:0app
2020-11-11 12:36:33
1287
原创 UE4中使用Carla——开发添加自定义PythonAPI
UE4中使用Carla——开发添加自定义PythonAPI1.简述2.开发添加自定义PythonAPI3.效果1.简述在这里,我们假定读者已经安装并对整体框架有了一定掌握,请参考下文安装配置和理解:UE4中使用自动驾驶模拟——Carla在添加自定义PythonAPI之前,考虑在客户端需要用户输入一些什么数据,这里以最常用的数据为例。2.开发添加自定义PythonAPI这里示例添加传transfrom参数从Client端也就是Python给到Server端的UE4,请严格按照步骤:在carlau
2020-10-15 15:21:18
3322
12
原创 浅谈RPC框架在UE4中的开发应用
浅谈RPC框架在UE4中的开发应用1.简述2.RPC 核心功能3.在UE4中的应用4.RpcLib1.简述有网络编程基础的或是有源码阅读的小伙伴经常会看到或在实际开发使用RPC这个框架,目前流行的开源 RPC 框架也比较多,我在UE4C++中也经常会使用它,今天谈一谈什么是RPC框架。RPC(Remote Procedure Call Protocol)–远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为
2020-08-28 17:54:44
2683
原创 UE4中使用自动驾驶模拟——Carla
UE4中使用自动驾驶模拟——Carla1.简述2.简单配置1.简述在之前的文章里,使用了Airsim来仿真模拟无人机飞行,UE4中使用飞控仿真插件——AirSim,Airsim本身也是支持自动驾驶模拟的,使用方法无太大不同,为了学习探索这两者的区别,在这里记录一下carla的使用。Carla主要通过Server-Client方式使车辆与虚拟世界进行交互,这样就可以在本机运行,也可以部署多个客户端同时运行。Client API采用Python编写,Client向Server发送command和meta
2020-08-19 17:37:45
12651
32
原创 UE4中使用真实天空插件——TrueSky
UE4中使用真实天空插件——TrueSky1.简述TrueSKY是一个软件开发套件,可以在各种平台上实时渲染逼真的天空,云彩和大气效果。经过多年研究和开发,它基于光散射和吸收的物理原理,并针对速度进行了高度优化。并实时更新,trueSKY在GPU上创建体积云和大气数据,并通过轻量级API提供对数据的实时访问,该SDK是跨平台和独立于渲染器的。它们按需形成和蒸发,这是针对现实,实时天空和云彩的最佳性能系统。本来作为一个简单的插件,不想做过多记录的,但是在使用过程中发现了一系列的小问题和bug,故在此记
2020-06-16 12:45:45
11336
2
原创 使用KBEngine开发UE4服务端——开发详解
使用KBEngine开发UE4服务端——开发详解1. 简述开始正式进入开发,网络上关于开发和修改文件的文章较少,这里会记录自己开发过程中需要更改的地方和一些流程。2. 前期的配置说明根据前文配置过后,在kbengine文件夹下,双击new_assets.bat生成一个新的资产库作为这里开发使用的资产库,生成的文件夹名字随意。这里更改KBE提供默认的Account, 在{项目资产库}/re...
2020-04-22 15:31:03
2130
1
原创 一些用过实用的软件工具和网站汇总
一些用过实用的软件工具汇总作为工作、学习,一些好用的开发软件是必不可少的,工具是帮助开发者更好的辅助 这里汇总一下亲自用过的工具,有些长期没用会有遗忘,以后如果需要可以回头再来使用:VS2017 ,大家都懂;QT5.12 ,客户端界面;Source Insight ,海量代码阅读神器;wireshark7 ,网络抓包工具;Everything ,快速搜索文件;FileZilla...
2020-04-20 17:09:07
794
原创 UE4中使用飞控无人机仿真插件——AirSim
UE4中使用飞控仿真插件——AirSim简述项目中使用UE4开发无人机飞控的仿真,所以了解并学习了部分AirSim的机制,微软开源了基于虚幻引擎的一款用于模拟无人机飞行的工具AirSim。通过AirSim平台可以理解自动驾驶仪在真实世界中是如何行驶的,同时可以在该平台使用深度学习技术来理解这些运输工具在各种不同的环境下是如何反应的。可以通过飞行控制板或模拟器进行硬件模拟输入,这里我使用了纯...
2020-04-17 17:19:56
6745
8
原创 使用KBEngine开发UE4服务端——配置Linux云服务器
使用KBEngine开发UE4——配置Linux云服务器简述我们在本地mysql灵活运用了之后,就是部署到我们的云服务器上了,作为云服务器,我也用过一段时间的windows,效果不尽人意,同时处理性能不佳,如果你是土豪可以忽视,无限充值加配置即可,这也是为什么大多数人服务器要选择linux,可以更大化发挥作为服务器的性能,我这里使用的是阿里云的ubantu系统。感兴趣也可以使用虚拟机操作。...
2020-04-13 17:22:56
1397
原创 使用KBEngine开发UE4服务端——添加项目
使用KBEngine开发UE4——添加项目简述在上一篇配置和使用demo之后使用KBEngine开发UE4——入门配置我们开始使用kbengine搭建属于自己的项目了。加入插件kbengine作为插件,和UE4结合主要配置如下:在自己创建的工程文件.sln中找到.build.cs这个文件,在最后加入KBEnginePlugins,如图:项目的根目录下创建Plugin...
2020-04-09 17:30:35
1099
4
原创 使用KBEngine开发UE4服务端——入门配置
使用KBEngine开发——入门简介最近自学使用虚幻UE4开发考虑服务端选型,了解到KBEngine,后改名comblockengine,开源,有开发文档,有更新维护是它的优点,适合我们去深入学习并且快速上手,那么我们开始看看上手学习吧!KBEngine作为一款开源的服务端引擎, 仅Python脚本即可简单高效的完成任何游戏逻辑(支持热更新), 使用配套客户端插件能够快速与(Unity3...
2020-04-09 11:22:16
2265
原创 2019年的小结
2019年的小结2019年的学习和实践小结2019年的学习和实践小结2019感慨颇多,对于自己而言是重要的一年,基本完成了一个作为技术人的目标,学习新技术新工具。从学习到实践、独立开发、完成项目和指标,虽然平台小众也可谓不无收获。今年主要参与项目包括视景三维仿真,光纤数据分发,和指挥控制平台 。独立学习和研发MAK下的全套仿真软件,包括了VR-Force,VR-Link,VR-Vantage...
2020-01-02 11:35:03
383
原创 VS报错问题汇总
记录软件使用过程中遇到的各种报错,下次遇到时可以直接解决。“operator new[]”: 5 个重载中没有一个可以转换所有参数类型参考:https://www.cnblogs.com/zhishuai/p/7459095.html无法打开文件“ libboost_signals-vc141-mt-sgd-x64-1_70.lib"参考:https://blog.csdn.net...
2019-05-05 16:10:35
1076
原创 QT——延时\定时器问题的汇总
QT延时/等待怎么写?大概分为两类,一个是非阻塞延时,一个是阻塞延时,这里做一个小结,第三种耗时方法用的较少一、阻塞型延时Qt一般使用QThread::sleep()来延时,但是这样会阻塞住线程,体验太差,这样只可以用在子线程中。QThread::msleep(50);//阻塞延时50ms或者使用定时器:void Delay_MSec_Suspend(unsigned int mse...
2019-04-18 14:42:15
4660
2
原创 C获得命令行输出结果
在c程序中,system函数可以运行命令行,但是只能得到该命令行的int型返回值,并不能获得显示结果。例如system(“ls”)只能得到0或非0,如果要获得ls的执行结果,则要通过管道来完成的。首先用popen打开一个命令行的管道,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果在linux上运行的例子如下:void executeCMD(const char *cmd, ch...
2019-04-09 17:42:36
2866
转载 C++ 线程池
为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提...
2019-04-02 14:25:57
277
原创 指针传递问题小结
指针值传递、地址传递和引用传递指针的值传递指针的地址传递指针的引用传递总结一下指针值传递、地址传递和引用传递 :指针的值传递//test.c#include <cstdio>#include <cstring>#include <cassert>void fun(char* p){ p = (char*)malloc(sizeof(cha...
2019-04-01 15:26:03
457
原创 2018年的小结
2018年的小结2018的曲折学习和实践小结2018的曲折学习和实践小结2018对于自己是重要的一年,不仅仅是知识的积累,还有多维领域跨度的问题,博客可以记录自己的技术学习过程和不懂的地方。2018年的年初和去年学习路线一直以单片机为主,博客中大多知识是开源,涉猎到单片机STM32和公司产品打印的相关知识,开源的一大好处是知识共享,可以很好快速的学习和积累,大多数通过我的blog看到这些文章...
2018-12-29 11:07:32
836
7
Fundamentals of Computer Graphics - 5th edition
2023-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人