主页
分类
标签
归档
主页
分类
标签
归档
编译与链接
C/C++编译与链接 《程序员的自我修养:链接、装载与库》阅读笔记 编译 编译可以被分为四个步骤: 预编译(Prepressing) 编译(Compilation) 汇编(Assembly) 链接(Linking) 预编译 gcc -E hello.c -o hello.i cpp hello.c > hello.i 移除并展开所有#define 处理所有条件预编译指令,如#...
2023-12-27
program
program
阅读全文
map
map 突然发现一个华科大佬的博客,学习一波 map是一种映射结构,能够存取键值对(键是唯一的) map通常有两种实现方式:哈希表(std::unordered_map)、红黑树(std::map) 哈希表 哈希表的查找删除均为O(1) 哈希表是一种空间换时间的算法,现在我们要存储一组键值对,假设键的范围是0~99,那么我们就开辟一个大小为100的数组,数组中存储了指向值的指针,于是我们...
2023-12-13
program
program
阅读全文
BCN编码
BCN编码 之前在知乎看到有美术在吵PNG和TGA哪一个更好用,但实际上引擎里使用的贴图是需要经过编码处理为GPU友好的资源格式,比如Windows上常用BCN编码,iOS常用ASTC编码 BCN原理 By storing some colors in their original size, and other colors using an encoding scheme, you...
2023-11-29
graphics
graphics
阅读全文
软光栅化遮挡剔除
软光栅化遮挡剔除 DrawCall和着色十分昂贵,于是我们希望可以剔除掉那些看不见的物体,以提高性能。而简单的视锥剔除并不能剃干净场景的物体,于是需要遮挡剔除。 这篇文章是一个CPU端的遮挡剔除,需要离线制作Occlusion Mesh,但不依赖各种GPU Driven的技术 Intel认为,CPU端使用GPU生成的Depth buffer做剔除,如果你不提前开一个Depth Only Pa...
2023-11-15
graphics
graphics
阅读全文
grep搜索lib文件
grep搜索lib grep 前几天写代码发现链接不到某个函数,同事说我肯定少链接了一个.lib文件,然我却不知道少链接了谁 同事交给我一个小技巧,lib文件本质是一个代码压缩包,是可以对里面的内容进行搜索的,在Linux(WSL)中进入存放.lib的库,输入命令 grep -r <函数名> . 就会匹配vkCmdBeginDebugUtilsLabelEXT这个函数在哪一个.l...
2023-11-09
program
program
阅读全文
雨雪图
雨雪图 现在游戏大多会有天气系统,尤其是雨天雪天 在雨天和雪天静态物上面要覆盖一层雪,可以参考Shadow Map的方法,从顶部向下绘制一张深度图(一般只收集静态物),运行时比较深度即可判断像素是否在最上面 值得注意的是玻璃等半透明物体按不透明的方式绘制深度图 参考 Water drop
2023-11-06
graphics
graphics
阅读全文
C++获取CPU型号
C++获取CPU型号 不同CPU的指令集有所差异,尤其是在使用SIMD之类的feature时要十分注意,以MSVC获取CPU型号为例 核心是使用指令__cpuid,其实你也可以__asm {}自己写汇编 #include <iostream>#include <string>#include <intrin.h>#include &...
2023-11-06
program
program
阅读全文
Clustered Shading
Clustered Shading 《Clustered Deferred and Forward Shading》阅读笔记 Cluster:组,簇,一堆物体的群集,将一个个零散的小物体整合为一个Cluster,可以加速剔除 Cluster的思路跟TBS思路很像,也是将view进行切分,但是每一个Cluster拥有一个固定的三维边界(坐标和法线),于是解决了Tiles退化的问题 光照计算...
2023-11-04
graphics
graphics
阅读全文
视锥剔除
视锥剔除 《Optimized View Frustum Culling Algorithms for Bounding Boxes》阅读笔记 剔除的目的是减少要绘制不可见的物体,视锥剔除(View Frustum Culling,VFC)是使用一个平头四棱锥和场景中物体做可见性测试,实现快速剔除 为了加速视锥和场景物体的相交测试速度,我们会使用Bounding Volume(比如AA...
2023-11-03
graphics
graphics
阅读全文
C++20下spdlog使用踩坑
C++20下spdlog使用踩坑 spdlog是一个开源的被广泛使用的C++log系统,于是我模仿Piccolo引擎写了一个Log系统,结果由于C++不允许连续进行两次及以上的用户自定义的隐式构造,使得spdlog的log函数无法正确推断匹配Args...,最后在公司C++高手的帮助下成功解决了问题,于是在此记录一下踩坑历程 最初的版本 我参考开源项目的实现,使用spdlog写了一个简易的L...
2023-10-29
program
program
阅读全文
上一页
6 / 13
下一页