
C++
文章平均质量分 79
沉默的舞台剧
Keep running
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
位运算的应用场景及作用
位运算加速技巧本方法可以让C、C++语言指令进一步接近汇编指令的执行效率,提高嵌入式系统的速度和稳定性。1.位运算原则:&(与逻辑):有0出0,全1出1;|(或逻辑):有1出1,全0出0;~(非逻辑):空即是色,色即是空;^(异或):相异出1,相同出0;2. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300%x = x * 2;x = x * 64;//改为:x = x << 1; // 2 == 21x = x <<原创 2021-01-30 12:43:16 · 1713 阅读 · 0 评论 -
随记:面向对象接口设计原则及智能指针原理(引用指数)
一、设计原则1、单一职责原则类的职责单一,对外只提供一种功能,而引起类变化的原因都应该只有一个。2、开闭原则类的改动是通过增加代码进行的,而不是修改源代码。3、里氏代换原则任何抽象类出现的地方都可以用他的实现类进行替换,实际就是虚拟机制,语言级别实现面向对象功能。4、依赖倒转原则依赖于抽象(接口),不要依赖具体的实现(类),也就是针对接口编程。5、接口隔离原则不应该强迫用户的程序依赖他们不需要的接口方法。一个接口应该只提供一种对外功能,不应该把所有操作都封装到一个接口中去。原创 2020-07-07 22:32:11 · 283 阅读 · 0 评论 -
Vulkan_Shader_Day06—光照(多光源_Multiple lights)
多光源_Multiple lights我们在前面的教程中已经学习了许多关于Vulkan中光照的知识,其中包括冯氏着色(Phong Shading)、材质(Material)、光照贴图(Lighting Map)以及不同种类的投光物(Light Caster)。在这一节中,我们将结合之前学过的所有知识,创建一个包含六个光源的场景。我们将模拟一个类似太阳的定向光(Directional Light)...原创 2020-02-08 23:23:29 · 1223 阅读 · 0 评论 -
Vulkan_Shader_Day05—光照(投光物_Light casters)
投光物(Light casters)我们目前使用的光照都来自于空间中的一个点。它能给我们不错的效果,但现实世界中,我们有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。在这一节中,我们将会讨论几种不同类型的投光物。学会模拟不同种类的光源是又一个能够进一步丰富场景的工具。我们首先将会讨论定向光(Directional Light),接下来...原创 2020-02-07 00:43:26 · 777 阅读 · 0 评论 -
Vulkan_Shader_Day04-s—推式常量(push constants)
在着色器中使用推式常量(push constants)为了能够更好的进行下部分投光物的练习,我们先创建十个相同大小,位置不同的箱子,故可使用push constants来实时更新不同位置创建箱子。简介当我们向着色器提供数据时,通常使用uniform缓冲区,存储(storage)缓冲区或其他类型的描述符资源。 遗憾的是,更新此类资源可能不太方便,尤其是当我们需要提供频繁更改的数据时。为此,引...原创 2020-02-06 00:28:55 · 1139 阅读 · 1 评论 -
Vulkan_Shader_Day04—光照(光照贴图_Lighting maps)
光照贴图在上一节中,我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观,但是这仍不能对一个物体的视觉输出提供足够多的灵活性。在上一节中,我们将整个物体的材质定义为一个整体,但现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。想想一辆汽车:它的外壳非常有光泽,车窗会部分反射周围的环境,轮胎不会那么有光泽...原创 2020-02-05 00:03:43 · 642 阅读 · 0 评论 -
Vulkan_Shader_Day03—光照(材质_Materials)
光照之材质_Materials一、定义材质数据在现实世界里,每个物体会对光产生不同的反应。比如说,钢看起来通常会比陶瓷花瓶更闪闪发光,木头箱子也不会像钢制箱子那样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的高光点。如果我们想要在Vulkan中模拟多种类型的物...原创 2020-02-03 22:14:31 · 679 阅读 · 0 评论 -
Vulkan_Shader_Day02—光照(基础光照_Phong Lighting Model)
基础光照现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易一些,而且看起来也差不多一样。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫...原创 2020-02-02 17:42:04 · 1192 阅读 · 7 评论 -
Vulkan_Shader_Day01—光照(物体颜色)
光照之颜色在学习部分之前,我们需要对上一部分代码进行部分修改重塑:1.使用立方体模型来代替测试光照场景。将原有代码的loadModel()方法替换成loadCube(); void loadCube() { vertices = { // positions // colors // normals // textur...原创 2020-02-01 23:37:25 · 1091 阅读 · 5 评论 -
STL模板常用算法
STL常用算法汇总常用到的一些算法,记录下方便后续使用,小白自用,大神勿喷1.遍历 & 查找算法1)for_each:常用的遍历算法。vector<int> v = {1, 5, 3, 8};for_each(v.begin(), v.end(), [](int val) { cout << val << endl;});2)t...原创 2019-12-31 17:10:59 · 271 阅读 · 0 评论