摘要:
Plain Old Data https://zh.cppreference.com/w/cpp/named_req/PODType 简言之,针对POD对象,其二进制内容是可以随便复制的,在任何地方,只要其二进制内容在,就能还原出正确无误的POD对象。对于任何POD对象,都可以使用memset()函 阅读全文
摘要:
参考 http://www.dyn4j.org/2010/01/sat/ SAT: 用来判断两个Convex是否相交。同时可以找到而者minimum penetration vector。 凹多边形可以拆成多个凸多边形 如果能找到一个Axis,两个convex的投影不交叉,那么这两个convex也不 阅读全文
摘要:
0. vs 查看预编译后的代码 1. # 和 ## #define P(A) { printf(" the square of %s is %d\n", #A, A * A); } #define Q(B) { printf(" the square of "#B" is %d\n" , B * B 阅读全文
摘要:
待补充 阅读全文
摘要:
先放下代码,未完待续。 TraversalStack.Push(hierarchy.Root); while ( not TraversalStack.Empty() or not QueryQueue.Empty() ) { //--PART 1: process finished occlusi 阅读全文
摘要:
1. #pragma pack(show) 可以查看当前设置 2. #pragma pack(n) 作用于结构体时。a: 每个成员.xxx的起始位置要是min(sizeof(.xxx), n)的倍数。b: 结构体大小要是min(max(sizeof(.xxx)), n)的倍数 3. 结构体成员是数组 阅读全文
摘要:
Stupid C++ Tricks: A better sizeof_array() 先上代码: template<typename Ty, size_t Num> char(&CountOfRequireArrayArgumentT(const Ty(&)[Num]))[Num]; #define 阅读全文
摘要:
__declspec(novtable) 的作用是:类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间。缺点是该类型对象不能调用虚函数了,一般用于接口。 如下代码: class Base1 { public: virtual void f() {}; virtual void 阅读全文
摘要:
shadow map的时候经常看到这两个函数 用于将0-1之间的深度值保存到RGBA8纹理里面。 参考http://marcodiiga.github.io/encoding-normalized-floats-to-rgba8-vectors解释下原理: 首先上述方法只能编码/解码小数部分,也就是 阅读全文
摘要:
非常好的一篇文章http://www.gotw.ca/publications/mill17.htm 一看就知道调用的是void call_who(int*)。可是, 竟然调用的是: void call_who(T*)。!!!! 原因是文章中提到的: Finally, let's focus on 阅读全文