自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录值得记录的东西

个人理解,个人观点,仅供参考

  • 博客(136)
  • 收藏
  • 关注

原创 提高UE5开发舒适度的100个技巧

很实用的技巧,极大提高工作效率

2024-09-04 01:29:32 372

原创 UE赋予某个C++类tick的能力

注册到 Ticker ,返回值是一个句柄,后面如果有需要可以移除该ticker。,重写Tick()函数来获取tick能力。允许注册一个函数,使其在每帧被调用。设置一个定时器来定期调用自定义的。函数,而不是在每帧调用。

2024-08-23 15:41:07 324

原创 UPROPERTY(meta = (BindWidget))的含义

UPROPERTY中的标记的作用是将 C++ 类中的变量(widget成员变量)与蓝图中的UI 元素(widget元素)进行绑定(例如ButtonTextBlock等)。这个标记主要在的子类中使用,用于确保在蓝图中创建的控件能够在 C++ 中直接访问和操作,即实现二者相互绑定。BindWidget。

2024-08-23 12:23:29 317

原创 UE5用蓝图实现物体A始终朝向物体B |Find Look at Rotation|

简简单单几个蓝图。

2024-08-21 10:26:07 529

原创 耳切法三角网构造代码

【代码】耳切法三角网构造。

2024-08-19 18:33:33 92

原创 UE5 C++中的委托详细说明

2024-08-04 23:31:27 601

原创 UE5中的UGameInstanceSubsystem

是 Unreal Engine 5 中的一种子系统(Subsystem),它是一个新功能,旨在提供一种模块化的、可管理的方式来添加和维护游戏的各种全局服务或功能。它是 的子系统,可以用于实现全局的、跨关卡的功能和服务。 是一个可以附加到 上的对象,它的生命周期和 一样长。这意味着它在游戏启动时创建,并在整个游戏生命周期内保持存在,直到游戏结束。全局访问:由于 的生命周期与 一样长,因此可以在整个游戏中随时访问。这使得它非常适合用于管理全局状态或服务,例如:模块化设计:子系统提供了一种模块化的方式来

2024-08-04 22:58:12 705

原创 UEC++中的RTTI

**RTTI**(Runtime Type Information,运行时类型信息)是C++语言提供的一种机制,允许在程序运行时获取对象的**类型信息**,RTTI通常用于处理多态性、类型转换和类型检查。

2024-08-01 23:43:46 428

原创 UE5 C++ 材质类UMaterialInterface、UMaterialInstance

继承自UObject,是一个比较底层的材质类,从名字也能看出来,他是个接口类(但是并非虚基类),基本上它的作用就是多态。它非常适合需要在多个对象之间共享相同参数的情况。是一种材质实例,其参数在编辑器中设置,并在。它主要用于在不修改基础材质()的情况下,创建带有特定参数的。**示例:**在编辑器中创建。材质参数的材质实例。

2024-08-01 16:11:10 342

原创 UE5C++中,NewObject<>()和CreateDefaultSubobject<>()的区别

NewObject()和CreateDefaultSubobject()的区别。

2024-07-24 10:59:38 446

原创 UE中程序化生成网格模型顶点法线手动计算(平均法线)

TODO。

2024-07-23 19:16:55 212

原创 std::vector容器,用operator[]和at方法进行元素访问的区别

std::vector容器,用operator[]和at方法进行元素访问的区别。

2024-07-17 15:32:53 306

原创 UE多人网络游戏中Actor的Network Role属性

多人网络游戏中,每个Actor都具有一个属性,。代码中的对应类型为ENetRole。AuthorityProxyAuthority属性通过Local Role和变量来跟踪,Local Role表示该Actor在本机上的权限属性,而Remote Role表示该Actor在远程服务器上的权限属性。UE默认采用的 server-authoritative模型,意味着,所有信息都会从服务器复制到客户端。因此基本可以这样说:服务器上的Actor的Local Role变量肯定为Authority,而在远程客户端上的。

2024-04-21 01:01:47 964

原创 UE C++获取某个旋转状态(欧拉角表示)下的三个方向向量的方法

当想要获取某个轴(比如 X 轴)的方向向量时,可以直接从旋转矩阵中提取对应的列。可以直接理解成,对局部空间的x轴应用矩阵R,从而得到了世界空间中的方向向量结果。数学上,这些向量是通过旋转矩阵与原始坐标轴向量相乘得到的。其中,每一列实际上代表了旋转后的坐标轴在原始坐标系中的方向向量。实际上这个旋转矩阵乘以。

2024-04-19 16:28:53 370 1

原创 OpenGL设置顶点布局的封装

正常来说,在OpenGL中,指定一块顶点缓存的布局并不难,但是当顶点缓冲的类型非常多的时候,就会很难阅读、维护

2024-02-23 22:43:55 954

原创 SSAO shader

SSAO

2024-02-21 22:35:29 451

原创 Vulkan中的SwapChain、FrameBuffer和RenderPass:概念理解及关系

实际上,imageView并没有直接存储图像数据,你可以将其比喻为一个"窗口",你可以透过这个窗口看到图像的一部分,同时指定这个窗口的属性,比如窗口的大小、位置等。SwapChain提供了可以呈现到屏幕上的图像和图像视图,FrameBuffer关联了这些图像视图,并指定了RenderPass,RenderPass定义了渲染操作的步骤和依赖关系。总体而言,framebuffer 的附件设置是根据你的渲染需求而定的,但通常会包括至少一个与 swapchain 相关的颜色附件。如果你有其他需要渲染的内容,例如。

2024-01-25 21:06:59 1198

原创 vulkan中的texture(VkImage、VkImageView、VkSampler、VkDeviceMemory)

在 Vulkan 中,对于很多对象(比如 VkBuffer 和 VkImage),数据存储和句柄是分离的,这为开发者提供了更多的灵活性。这样的设计允许你更精细地控制数据的存储位置、布局和访问权限。以便在着色器中进行纹理采样操作。

2024-01-23 19:28:46 901

原创 C++多线程环境中进行内存分配跟踪的接口类设计(全局重载new/delete操作符)

操作符,实现堆区空间的分配和释放的跟踪记录。

2024-01-23 13:50:03 454

原创 vulkan中分配显存并拷贝数据的流程(vkBuffer、vkDeviceMemory的关系)以及VMA库介绍

设备内存对象(GPU显存),用于实际存储 Vulkan 缓冲区对象的数据。缓冲区需要分配显存后才能存储实际的数据,最后成功分配的显存块是通过。再次强调,它并不包含任何指向实际显存块的指针,只是一些信息。表示一个缓冲区对象,用于存储数据,比如顶点数据、索引数据等。函数将缓冲区对象和分配的设备内存关联起来,使得。函数从vkBuffer对象中获取缓冲区的内存。是两个不同的概念,但它们通常是一起。函数为缓冲区分配实际的设备内存(),并将该内存与缓冲区关联起来。对象,定义了缓冲区的。能够真正使用这块显存。

2024-01-17 17:11:30 1423

原创 $ git push ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from

解决方法一:改用HTTP协议(我没试过,应该是可以的)

2024-01-17 03:41:27 1179 1

原创 vulkan中从CPU到GPU传输数据,暂存缓冲区(staging buffer)的必要性

在使用诸如Vulkan、DirectX等现代图形API时,经常用于充当主机和GPU之间的桥梁,以进行高效的数据传输。要明确知道,staging buffer是。既然都是从CPU到GPU传输数据,为什么要先从CPU端拷贝到。(显存块)呢,这不很多余么?

2024-01-17 03:03:53 1149 5

原创 vulkan中的指令队列的大致原理

在vulkan中,指令池`vkCommandPool`分配指令缓冲`vkCommandBuffer`,而指令缓冲用于记录`计算、渲染指令`,记录完后,把该指令缓冲提交给指令队列`vkQueue`,然后等待执行。

2024-01-15 03:46:25 718

原创 C++的一些零散小知识

想到看到就记录一下

2023-12-24 03:17:35 434

原创 C++17 inline静态变量,静态变量不用再类内定义类外初始化了

并且这个表达式还是constexpr,从而可以在编译时进行求值,提供更好的优化。然后再在其他任何.cpp文件中包含MyClass.h文件,使用。而在 C++17 引入的标准中,你可以直接在类中定义并初始化。这使得静态成员变量的定义和初始化。

2023-12-24 02:16:25 789

原创 C++ 侵入式智能指针实现原理

mutable用于修饰类的成员变量,表示该成员变量可以在被标记为 const 的成员函数内修改。

2023-12-23 20:48:44 500

原创 用VS Code修改源代码的编码格式

用VS Code打开一个编码格式为GB2312的源代码文件,中文部分显示为乱码。此时我们点击上面红框这个位置,命令面板弹出两个选项,选择。,选择你想保存的格式即可,这里我选择UTF-8。可以看到VS Code已经猜测出该文件就是。然后,这个文件里的中文部分就可以正常显示了。这是因为VS Code默认解码格式为。最后,再重新点击右下角的。编码的,这里我们选择。

2023-12-21 22:00:51 1755

原创 VS Code + MinGW 搭建 Windows C++开发环境以及如何简单根据CMake维护的项目生成.sln文件

这是Visual Stuidio(IDE)用的编译器,在VSCode中,如果选择MSVC作为编译器,结果就是生成一个对应VS版本的.sln解决方案,后面就不说了吧 用Visual Studio 2022 打开就行。必须掌握的技能,目前github上开源项目几乎都采用CMake来维护,不会使用则寸步难行,学会CMake之后,其他的构建工具都简简单单,比如Premake。,并指定调试相关配置属性,比如调试的目标可执行文件,调试采用的调试器路径等。,这是C/C++插件默认帮我们生成的,必须有这个文件才能编译。

2023-12-20 23:26:19 3138

原创 cmake中的configure_file() 和option()命令

cmake中的configure() 和option()命令的作用域问题。

2023-12-15 17:19:03 760

原创 【游戏引擎 - C#脚本系统】6、C#端调用C++函数

通过在C++中注册函数,然后在C#中声明和调用这些函数

2023-12-08 01:27:13 1128

原创 【游戏引擎 - C#脚本系统】4、C++调用C#函数

,而该调用方法特定于你提供的方法签名,这意味着对于可以传递哪些参数没有歧义。那么,何时应该使用mono_runtime_invoke,何时应该使用非托管方法桩呢?这取决于情况。如果你在编译时(C++编译时)不知道方法的签名,那么你可能应该使用mono_runtime_invoke,尽管你也可以使用非托管方法桩,但通常你希望参数在编译时已知。

2023-12-07 00:25:49 1118

原创 【游戏引擎 - C#脚本系统】5、字段和属性(Fields & Properties)

翻译 from peter1745的《mono-guide》

2023-12-06 10:56:40 1184

原创 【游戏引擎 - C#脚本系统】3、程序集加载和测试

11111

2023-12-06 10:44:59 1052

原创 【游戏引擎 - C#脚本系统】1、Mono介绍

11111

2023-12-06 10:44:40 1931

原创 【游戏引擎 - C#脚本系统】2、配置Mono Runtime环境

11111

2023-12-06 10:44:14 1366

原创 C++17折叠表达式(Fold Expressions)

1

2023-11-20 19:30:46 336

原创 C++11 模板参数包(Parameter pack)

Template parameter pack(模板参数包)是C++中用于接受零个或多个模板参数的一种机制

2023-11-20 18:43:28 405

原创 C++11 constexpr 常量表达式应用场景

C++11 引入的一个特性,是一种关键字,用于指示表达式或函数可以在**编译时**求值。

2023-11-14 02:07:47 441

原创 C++11 原始字符串字面量R“()“

`R"()"`是C++11引入的一项特性,它允许创建**不需要转义字符**的字符串字面量。字符串中包含特殊字符、换行符和其他转义字符时,**不需要反斜杠**转义它们。

2023-11-14 01:32:40 756

原创 C++17 std::filesystem

用于表示文件系统路径。它提供了一系列方法,允许你对路径进行各种操作,如拼接、分解、获取文件名等。路径可以是相对路径或绝对路径,可以包含文件名、目录名等信息。std::filesystem 是 C++17 标准引入的文件系统库,提供了一套用于处理文件和目录的 API。:用于表示目录中的一个条目,可以是文件或目录。你可以使用这个类来检查目录中的条目类型、获取条目路径等信息。:是一个用于遍历目录内容的迭代器。你可以使用它来遍历目录中的所有文件和子目录,并获取它们的信息。:用于删除文件或目录。

2023-11-10 17:23:33 928

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除