抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

grep搜索lib grep 前几天写代码发现链接不到某个函数,同事说我肯定少链接了一个.lib文件,然我却不知道少链接了谁 同事交给我一个小技巧,lib文件本质是一个代码压缩包,是可以对里面的内容进行搜索的,在Linux(WSL)中进入存放.lib的库,输入命令 grep -r <函数名> . 就会匹配vkCmdBeginDebugUtilsLabelEXT这个函数在哪一个.l...

雨雪图 现在游戏大多会有天气系统,尤其是雨天雪天 在雨天和雪天静态物上面要覆盖一层雪,可以参考Shadow Map的方法,从顶部向下绘制一张深度图(一般只收集静态物),运行时比较深度即可判断像素是否在最上面 值得注意的是玻璃等半透明物体按不透明的方式绘制深度图 参考 Water drop

C++获取CPU型号 不同CPU的指令集有所差异,尤其是在使用SIMD之类的feature时要十分注意,以MSVC获取CPU型号为例 核心是使用指令__cpuid,其实你也可以__asm {}自己写汇编 #include <iostream>#include <string>#include <intrin.h>#include &...

Clustered Shading 《Clustered Deferred and Forward Shading》阅读笔记 Cluster:组,簇,一堆物体的群集,将一个个零散的小物体整合为一个Cluster,可以加速剔除 Cluster的思路跟TBS思路很像,也是将view进行切分,但是每一个Cluster拥有一个固定的三维边界(坐标和法线),于是解决了Tiles退化的问题 光照计算...

视锥剔除 《Optimized View Frustum Culling Algorithms for Bounding Boxes》阅读笔记 剔除的目的是减少要绘制不可见的物体,视锥剔除(View Frustum Culling,VFC)是使用一个平头四棱锥和场景中物体做可见性测试,实现快速剔除 为了加速视锥和场景物体的相交测试速度,我们会使用Bounding Volume(比如AA...

C++20下spdlog使用踩坑 spdlog是一个开源的被广泛使用的C++log系统,于是我模仿Piccolo引擎写了一个Log系统,结果由于C++不允许连续进行两次及以上的用户自定义的隐式构造,使得spdlog的log函数无法正确推断匹配Args...,最后在公司C++高手的帮助下成功解决了问题,于是在此记录一下踩坑历程 最初的版本 我参考开源项目的实现,使用spdlog写了一个简易的L...

我不小心取了一个右值的地址 感觉每次背八股的时候都会看到左右值,但一直都是纸上谈兵(原谅我项目能力太差),结果今天真遇到了(我取了一个右值的地址 左值:占用一定内存,有明确的可辨认地址的对象,在表达式结束后仍然存在 右值:左值以外的对象(类似于临时对象,在表达式结束后就会销毁) 右值是一个临时的没有明确地址的对象,可能表达式结束这个对象就被销毁了,自然取它的地址是不确定行为,C++11后...

glTF入门 glTF介绍 DCC生成的模型往往不能直接被渲染引擎使用,比如包含冗余数据、缺失场景数据、缺少动画状态机、压缩率不足等。许多引擎拥有一个Asset Pipeline,负责将不同DCC导出的各类数据转化为引擎可以直接使用的资源文件,比如UE的Cooking操作 glTF是一种表示3D场景的模型格式,它的目标就是尽可能保留3D场景相关的数据(使用json描述场景),为渲染引擎提供无...

无状态方法 线程安全 同事经常跟我强调线程安全的重要性,比如下面这段代码,id是一个静态成员变量,被所有Student类的对象共享,在多线程环境下可能会造成不确定行为 class Student{private: static int id = 0;public: int getId() { return id; }}int Student::i...

内存分配 最近看了一些关于内存分配的分享,发现操作系统相关的知识都忘光了,于是打算借助Linux内核的内存分配机制,简单复习一下内存分配相关的理论知识 程序运行时不断进行内存的申请与释放,高效的分配方式不仅能提高内存的利用率,还能提高性能。 Linux内存分配原理 地址 程序需要装入内存才能运行,程序开始的位置相较于内存0地址会有一段偏移,这个偏移被称为物理地址。 在程序内部,以程序开头...