整理了一下实习时记录的有关于Unreal Engine 4的文档,共有两篇。
本文主要讲述UE4文件系统的抽象层次结构。
记录一些遇到过的大大小小的C++坑,或者是C++比较优秀的惯用技巧、设计模式。这些知识点十分分散却很有用,但他们单独拿出来难以构成一篇完整的文章,这里我以杂记的方式将它们记录下来,以便后续翻阅。
(最后更新于2020.09.06)
Cppcon是个著名的C++会议,由C++社区举办,每年有很多来自全球各地的演讲者分享C++语言相关的内容。其中的演讲大多数质量很高,不乏出自一些社区中知名的C++专家的精彩演讲。此外,也有很多C++在不同领域的相关实践,如游戏开发、嵌入式、HPC、高频交易等等,可以吸收到来自不同领域的经验。总的来说,Cppcon是一个十分难得的优质学习资源。
本文主要记录了一系列的观看Cppcon presentation时做的笔记,供后续参考使用。
(最后更新于2020.09.06)
函数式作为一种独特的编程范式,本着一切皆为函数的思想使它与传统的命令式编程、声明式编程形成了鲜明的差异。说到函数式编程,大部分人首先想到的是像Lisp、ML、Haskell、Scala这样的主打函数式编程的“纯”函数式语言,不过,这些语言从使用人数上来说算是小众语言,对于绝大部分的程序,命令式编程仍然占到主流。随着近些年来一些热门语言,如Python、JavaScript对函数式编程的越来越强的支持,函数式的思想可以说是逐渐成为了编程人员不可不知的一种主流编程范式。在这篇文章中我会讨论函数式编程在一门“古老”的语言——C++中的应用。可以看到,即使是C++这种偏向底层的系统级开发语言,近几年来也逐步加入了对函数式编程越来越多的支持。
最近在做个小渲染Demo,展示效果需要一些基本图元。基本图元的三角网格均可以程序化生成,这篇文章主要收集了这些生成方法。
图形学中,模型表示的方法很多,它们大致可以分为两类:显式表示(Explicit)与隐式表示(Implicit)。
显式表示的常见方法有:点/线/多边形表示和曲线/曲面表示等。而隐式表示,就可以直接给出几何体表面的定义方程,却不用管其如何求解:
比如对于三维球体,我们知道它的隐式表示为:
实时渲染中我们主要使用的是多边形表示,就需要将几何体的隐式表示转换为显式表示。常用的方法是将隐式表示的方程先转化为参数方程:
参数方程本身作为一种显式表示,其给出了几何体表面的点坐标,再将这些点坐标连接起来形成为多边形网格(一般是三角形)后,就得到了几何体最终的显式表示。
本文主要介绍几种球体的转换方法。
记录一些遇到过的大大小小的C++坑,或者是C++比较优秀的惯用技巧、设计模式~
我将平时阅读的一些项目代码的笔记总结于此。
俗话说,读代码比写代码要难数倍,尤其是读别人的代码。的确如此,不过,不管从什么角度统计,我们花在读代码上的时间都远多于写代码的时间,而如何将代码写的清晰易懂、便于维护,又是一个不简单的问题。在代码的“品味”上,怎样做出优雅的设计,是一件需要积累的工作,没有十足的经验恐怕是难以达成。虽说经验可以通过自己写代码来增加,但我一直认为,阅读好其他人的代码,品味其中的设计思路,吸收其中的设计优点,才会如虎添翼,迅速增加自己的“代码感”。
此外,阅读代码本身也是一门学问。如何高效地阅读数量众多,成千上万行起步的代码,并将其中的设计架构提取出来,也不是一件容易的事。
Lambda函数可以说是C++ 11中加入的最重要的特性之一了。Lambda(也称作匿名函数),提供了一种在代码中很方便地定义函数的方法。这种写法能让我们写出非常简洁的语句,比如[]{}()
也许就是C++中最简洁的表达式了。
我还是觉得需要边学边记录点什么,之前看了许多却没有较好地留下记录,而时间久了记忆也是容易遗忘的。笔记的内容均放在了这篇文章里了,以便以后查阅。
由于我发现图形学的东西不太适合分为一个个的独立知识点,要讲清楚一般都到一篇文章的篇幅,因此本文不再作为笔记,而是主要记录一些资源:优秀的教程、博客来源等等,以减少寻找优质资料所耗费的时间;也可以作为一个实用的资料指南针。