CG研究机关

欢迎来到永乐的图形学实验室,当然,不止图形学哦

C++反射原理探究(第二部分)

Yes and no

序 又是一次拖了很久的更新,不过,拖更是情有可原的:因为出了一次大长差(为期一年),同时这份差事性质比较特殊(有点小偏僻同时也不允许使用网络),所以“失联”了一段时间。客观因素导致堆了一肚子的东西没法吐露出来。而且在经历了一年的断网原始人生活回来后,真的体会到了“沧海桑田”一词的分量。好的,废话不多说。开始今天的内容。 在之前的反射原理探究中,我们实现了类型萃取与静态反射部分,同时挖了一...

从新建文件夹开始构建ShadowPlay Engine(7)

多线程驾到

序 好久不见,ShadowPlay引擎系列的更新拖了好久。之前一直在忙赶毕业设计,毕业设计完成后又去找实习、顺利毕业后工作896,连周六都没得。不过好消息是,因为毕业设计已经完成并且这个引擎也是我的毕业设计题目。所以如果不出意外的话ShadowPlay系列可以保证一个稳定的周期来进行更新。 在“Unity内存模型原理”一期博文中,引擎中的内存模型是被导师重点批斗的对象,但实际上话没说全,之...

C++反射原理探究(第一部分)

Cpp in the mirror

序 之前在做学期末课程设计时有用到过QT去写界面,被其中的信号槽以及动态反射机制吸引住。再后来在看《游戏引擎开发指南》中又再一次见识到了反射机制的魅力。不过遗憾的是书中并没有详细说明反射机制的实现原理,甚至连个伪代码都没有。在信号槽在我这里以监听者模式去魅之后,又去翻了翻博客园以及知乎上的一些实现思路,最终实现了一套小的反射框架:Cpp in the mirror(没错,就是neta的MJ的...

从新建文件夹开始构建ShadowPlay Engine(6)

做成B站视频的话应该很助眠(笑)

本篇序言 在经历了为期很长时间的调试以及思维纠错后,我们可以开始实现我们的内存管理模块了,我在前面说过如果各位要继续跟着学习的话可能会需要一定的计算机组成原理和操作系统的知识,不过在莽代码的过程中,我逐渐发现由于本引擎无论是从设计思路上还是代码实现上实在是太过于Rookie。所以秉承着简单到底的精神,我将一部分比较贴近底层的实现交给操作系统自己去完成,我们只要完成相关逻辑就好,所以也就不强...

Unity内存模型原理

站在巨人的肩膀上

序 最近濒临毕业,在学校里一堆乱七八糟的事忙完后终于可以开始静下心来做毕设同时做些技术探究了。当在上篇文章中提到的内存模型的有关概念提给了毕设导师后立刻被打了下来,怎么说呢,虽然没有想象中的恐怖批斗,但还是被指出了一些问题(不急,接下来我会说明)。所以便开始了在网络上的胡乱遨游,终于找到了一个可以用来参考的成功对象:Unity,所以之后可能ShadowPlayEngine的系列会暂时搁浅一段...

从新建文件夹开始构建ShadowPlay Engine(5)

内存戏法.

本篇序言 从本篇开始,我们要开始构建引擎核心中的系统组件部分,广义上讲其实我们从开始到现在一直都是在构建引擎核心中的系统部分,但严格的定义中系统组件大概有这么几个:内存管理,线程管理,文件管理,时间系统,特殊格式文件处理(比如XML,json文件等)。接下来的文章更新间隔可能会长一些,说不定哪天就断更了。诶嘿。 正如在上一篇文章中我所承诺的那样,接下来我会用大概3至4篇博文的长度来描述本...

从新建文件夹开始构建ShadowPlay Engine(4)

Open the eyes.

本篇序言 这次博客更新距离上次的时间间隔变短了好多,因为最近硬是抽出了一大部分时间来进行引擎的开发。而且运气很好的是在写链表这种很“敏感”的的数据结构的时候并没有出现那种灾难性的后果(恐怕是前一段时间在leetcode刷数据结构的原因吧)。于是本人才能在上篇博文发布后不久完成了基本渲染对象,渲染链,场景链这三个系统的实现。能这么顺利,运气其实占了很大的因素(笑)。 虽然由于这次更新的速度...

从新建文件夹开始构建ShadowPlay Engine(3)

从渲染窗口里说声HelloWorld!

本篇序言 各位可能看到博文的名字换了,也就是引擎名字换了,其实是在下想到了一个更棒的名字:皮影戏(ShadowPlay),取这个名字的含义是因为,游戏中的角色(Puppet)不也是由于我们的操作而动起来的么,电子游戏和皮影戏有很多相像的地方(可供人操作的纸偶,音乐,还有精彩的故事背景),不得不说古代人民的文化成果是最值得赞赏的(这或许也就是古时的小孩喜欢看皮影戏甚至自己想上去演的原因罢)。...

从新建文件夹开始构建UtopiaEngine(2)

说好的断更……才怪

本章序言 摸了两个月的鱼,又一次拾起了自己引擎的框架,开始完善引擎系统,如果非要用现实中的什么东西比喻的话,那么我们目前实现的框架连个脚手架都不是。把这项目这样晾着显然不符合本人的风格,而且要作为毕业设计的东西可不能蒙混过关。所以现在成了既要准备研究生考试又要忙于设计框架并编码的情况,生活已经充实到必须得抽空来写blog了。 还有一件事,就是我们的引擎现在的构建步骤可能要与我曾经参考的C...

用C/C++手撕CPlus语言的集成开发环境(1)

语言规范 + 词法分析器

序言 之所以叫做CPlus语言,是因为原本是想起名为CMinus的,结果发现GitHub和Gitee上一堆的CMinus的编译器(想必都是开过编译原理课程并且写了个玩具级的语言编译器的大佬们吧)。但是CPlus相较于C多了一些东西,而相较于C++又少了一些东西,又有点C#的影子,而且并不严格遵守编译原理课本上的CMinus标准,所以暂且取个中间值,就叫C+(CPlus,反正目前还没人用,那...