C++
文章平均质量分 62
带帯大师兄
图形编程,C++,UE4/UE5,Directx11/Directx12/Vulkan
展开
-
C++访问Private,Protecd,const修改值的一些方法总结
上面一个类所有变量都是Private, 并且存在一个Public模版函数, 这时候就可以通过模版函数特化来进一步访问。有段宏代码可以快速定义访问具体某个类的某个Proteced变量的代码,比较好用, 推荐进这篇博客里拷贝使用.这种访问Private办法最大的限制是类本身得存在Public模版函数.Protected变量访问比较常用的一种方法是用过定义母类方法来访问。原创 2024-06-15 22:15:17 · 499 阅读 · 0 评论 -
游戏中的寻路算法--Dijkstra算法和AStar(A*)算法
前言如今游戏中最最常用的两种寻路算法为Dijkstra算法和A*算法,虽然现代引擎中的Al寻路算法看似很复杂,其实大部分是Dijkstra算法或者A*算法的变种。导航网格(图数据)无论是2D游戏的导航网格或者3D游戏导航网格, 本质上就是一个图,里面包含了各种点数据和边数据。图(Graph)由点(Node)和边(Edge)构成,这里以二维为示例class FVector2D{public: float x; float y;}//2D位置...原创 2020-06-16 03:52:25 · 6603 阅读 · 1 评论 -
(UE4 4.27)插件添加GlobalShder
前言在上一节我们大致介绍了UE4 GlobalShader的情况, 并且在引擎代码做了一些修改来阐述GlobalShader的声明-定义-使用。实际上在UE4开发中, GlobalShader不一定使用在修改引擎代码,也可能是用在插件, 比如LensDistortion插件就是使用GlobalShader定制一个RenderToTexture的功能。当然在插件中,GlobalShader的使用场景不仅仅局限于RenderToTexture, 可以ComputeShader等等来加速某些并行计算(如基于G原创 2021-10-15 00:55:07 · 1289 阅读 · 1 评论 -
(UE4 4.26)UE4 UObject的内存管理机制浅析
UE4 UObject的内存管理机制UE4 UObject的内存管理机制原创 2021-09-24 01:52:25 · 3180 阅读 · 0 评论 -
(UE4 4.26)UE4 C++ FMemory内存管理从入门到深入
UE4 C++内存管理从入门到深入UE4 C++内存管理从入门到深入原创 2021-08-22 23:01:42 · 5398 阅读 · 2 评论 -
UE4 C++反射从入门到原理剖解(UE4 4.26)
UE4 C++反射具体应用案例测试反射类ATestActor// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "TestActor.generated.h"UCLASS(Blueprintable, meta = (Dis..原创 2021-08-05 23:05:50 · 5284 阅读 · 1 评论 -
RTTR(Run Time Type Reflection) C++反射原理实现剖解
1111111111111111111111111111111111111111111111111原创 2020-11-23 00:27:21 · 7291 阅读 · 1 评论 -
c++ 虚函数表, RTTI, dynamic_cast的探索
111111111111111111111111111111111111原创 2020-10-19 02:00:37 · 999 阅读 · 1 评论 -
C++多线程的生产者消费者问题: Queue(队列)和环形缓存(RingBuffer)的效率对比
111111111111111111111111111111111111111111111原创 2020-08-31 00:07:52 · 3764 阅读 · 0 评论 -
游戏内存管理三之GeneratorAllocator(通用的内存分配器)
前言在前面的游戏内存管理一之StackAllocator(堆栈分配器)和内存对齐和游戏内存管理二之PoolAllocator(池分配器)分别介绍了堆栈分配器和池管理器。堆栈分配器以堆栈的方式进行内存的分配和回收,并不是很灵活。而池分配器仅仅是针对一类对象,一类对象就是一个池,也就是我们存在N多种对象,就得用模板声明N种对象池,也是有点麻烦。所以希望实现一个比较通用的内存管理器,可以分配任意类型...原创 2019-11-19 01:34:12 · 508 阅读 · 1 评论 -
游戏内存管理二之PoolAllocator(池分配器)
在上个博客:游戏内存管理一之StackAllocator(堆栈分配器)中介绍了堆内存分配的弊端和堆栈分配器(StackAllocator)的实现,这篇介绍PoolAllocator(池分配器)的实现。PoolAllocator(池分配器)在游戏引擎编程中,常会分配大量同等尺寸的小块内存。比如我们需要分配N个矩阵对象,N个角色对象,N个武器对象,N个可绘制Mesh对象等等。这些就是池...原创 2019-10-14 01:15:54 · 1096 阅读 · 0 评论 -
游戏内存管理一之StackAllocator(堆栈分配器)和内存对齐
动态内存分配的弊端和解决在游戏编程中,以new或者malloc在堆上进行动态内存的分配是非常低效的操作。低效的原因两个:(1).堆分配器(heap allocation)是通用的设施,它必须处理任何大小的分配请求,从1字节到1000兆字节。这需要非常大的管理开销,导致malloc/free函数变得非常缓慢。(2)在多数的操作系统上,malloc/free必然会从用户模式(user ...原创 2019-10-11 00:51:24 · 1773 阅读 · 0 评论 -
共享智能指针(SharePtr)的C++实现
C++ 智能指针(共享指针)实现主要实现思想是引用计数法,在SharePtr类拷贝(Copy)和赋值(=)的时候引用计数加1,而在SharePtr类变量析构的时候引用计数减少1实现细节(1)SharePtr包裹类变量指针和引用计数指针int*, 这里引用计数采用 int* 为了在各个SharePtr变量实现计数共享,每个变量的计数变化都会影响其他计数template&...原创 2019-09-19 00:22:34 · 1667 阅读 · 0 评论