窗口Resize解决方案
先简单说下什么是 GLFW —— 它用于
TAG_COLLECTION //
共有 26 篇笔记使用了这个 Tag。
先简单说下什么是 GLFW —— 它用于
创建一个普通的对象池接口,在infra中实现对game obejct的对象池; 使用一个Pool Manager类,来进行所有对象池的注册、管理等,并且把它作为一个Service,方便进行管理调用
服务注册器,基本上针对单例模式下的各种 manager
最早开始 EasyX 绘制图形到学会贴图播放音效,复刻一些简单的小游戏(包括使用 pygame 等简单的东西)其实好像是先学的VC+,十分甚至九分的繁琐。这些小的图形库就已经让人兴奋不已 —— 可以从枯燥乏味的“黑窗口”到生动形象的各种画面。 但是这依旧不能算游戏引擎,我认为。因为 —— 物理、动画、网络等,各种...
首先在Assets 下进行日常开发,接着单独开发一个分支package,使用tag管理(Github Action 自动构建)
1. 扫描 Assets/ 2. 使用 AssetDatabase 发现资产、维护 GUID / meta 3. 通过 ImporterRegistry 把硬盘上的资产转化成 Runtime 可使用的资源 4. 在 AssetManager 中管理 CPU 资产、异步加载、热重载 5. 在 ResourceMan...
姑且称之为 Archive Mode —— 它合并了 Read 和 Write 两种方法,是的读写非常的对称,大大减少出错概率.
音频管理器,管理背景音乐和fx音效
单独实现一个可执行程序作为Benchmark,不依赖 Editor 的运行.
先生成一份纯数据的场景描述,然后丢给下一步的工厂BenchmarkSceneFactory进行实例化,构建真实的场景
CDO,Class Default Object,即提供了一个类的默认模板,每个 UClass 在内存中都会且仅会有一个对应的 CDO 实例
Data-Oriented Design 面向数据设计,比较侧重于数据布局和内存访问模式 —— 极致压榨性能,可以用于减少 Cache Miss
Entity-Component-System, 高性能编程中逃不开的。
实现了一个消息总线,订阅/发布,不多说
简单的编译期反射实现——调用clang读取AST树,然后获取反射信息,最后通过代码生成渲染出反射代码然后加入编译构建流程.
拆分Profiler中的宏定义和展开这块的内容 ——
把 ProfilerScope 和 ProfilerFrameScope 做一次 RAII 封装,保证有Begin就一定有End
如果热路径存储的是字符串,假设一直在每一帧运行的话 ——
定义 ProfilerEvent —— 把一次 profiler 的行为打包,形成一个固定格式,而不是随意乱写的数据(
先说明一下字段的定义,和 Session 比较简单的零碎边缘,把内部的具体实现留到下次说明
聚焦外部调用 BeginFrame / BeginZone / RecordCounter / RecordInstant 后,Session 如何构造事件,并把它交给下一层,即 ——
说明多线程中,每个线程获得和维护自己的 profiler threadId 和事件 buffer
创建了一个有限状态机,提供
> Reflection is the ability of a program to examine itself at runtime. This is hugely useful and is a foundational technology of the Unreal engine, powering ...
正常来说,在 C++ 内实现接口就直接写个纯虚类。但是由于这是 U++,其庞大的反射系统、蓝图、编辑器、序列化、UFUNCTION 调用机制等作用下,就需要遵照 UE 的接口形式来写