自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录值得记录的东西

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

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

原创 UE材质节点arctangent2解析

节省时间,网上偷的一张图看懂,看不懂再往下看吧。

2024-10-26 16:37:11 1404

原创 C++设计模式(更新中)

结合C++代码介绍各种设计模式概念和使用方式

2024-09-17 19:37:26 1574

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

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

2024-09-04 01:29:32 1104

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

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

2024-08-23 15:41:07 484

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

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

2024-08-23 12:23:29 543

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

简简单单几个蓝图。

2024-08-21 10:26:07 1199

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

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

2024-08-19 18:33:33 181

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

2024-08-04 23:31:27 1736

原创 UE5中的UGameInstanceSubsystem

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

2024-08-04 22:58:12 1656

原创 UEC++中的RTTI

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

2024-08-01 23:43:46 586

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

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

2024-08-01 16:11:10 1021

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

NewObject()和CreateDefaultSubobject()的区别。

2024-07-24 10:59:38 1310 1

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

TODO。

2024-07-23 19:16:55 590

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

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

2024-07-17 15:32:53 429

原创 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 1229

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

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

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

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

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

2024-02-23 22:43:55 1013

原创 SSAO shader

SSAO

2024-02-21 22:35:29 536

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

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

2024-01-25 21:06:59 1897

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

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

2024-01-23 19:28:46 1335

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

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

2024-01-23 13:50:03 520

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

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

2024-01-17 17:11:30 2045

原创 $ 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 1382 1

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

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

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

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

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

2024-01-15 03:46:25 859

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

想到看到就记录一下

2023-12-24 03:17:35 480

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

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

2023-12-24 02:16:25 1042

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

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

2023-12-23 20:48:44 591

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

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

2023-12-21 22:00:51 2626

原创 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 3609

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

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

2023-12-15 17:19:03 916

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

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

2023-12-08 01:27:13 1222

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

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

2023-12-07 00:25:49 1327

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

翻译 from peter1745的《mono-guide》

2023-12-06 10:56:40 1359

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

11111

2023-12-06 10:44:59 1218

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

11111

2023-12-06 10:44:40 2528

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

11111

2023-12-06 10:44:14 1627

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

1

2023-11-20 19:30:46 446

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

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

2023-11-20 18:43:28 649

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

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

2023-11-14 02:07:47 550

空空如也

空空如也

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

TA关注的人

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