蔬食戏书 新津韭黄天下无,色如鹅黄三尺余。东门彘肉更奇绝,肥美不减胡羊酥。贵珍讵敢杂常馔,桂炊薏米圆比珠。还吴此味那复有,日饭脱粟焚枯鱼。人生口腹何足道,往往坐役七尺躯。膻荤从今一扫除,夜煮白石笺阴符。 2021-11-15 相册 #美食祭
各种数据结构及其底层实现 vector:底层数据结构为数组,支持快速随机访问。 扩容规则为:当新建一个 vector 时,会首先分配一块连续的内存空间,当向其中增加元素是,如果初始分配空间已满,就会引起 vector 扩容。首先重新申请一个 2 倍大的内存空间;然后将原空间的内容拷贝过来;最后将原空间内容进行释放,将内存交还给操作系统。 在插入位置和删除位置之后的多有迭代器和指针引用都会失效,同理,扩容之后的所有迭代器指 2021-11-12 数据结构 #数据结构
顶点着色器和片元着色器 顶点着色器 顶点着色器负责的功能是把输入的数据进行 坐标变换,计算光照公式生成每个点颜色,计算纹理坐标。并且把位置和纹理坐标发送到片元着色器。 输入参数 attribute:空间坐标、法向量、纹理坐标及顶点颜色。 uniform:uniform保存由应用程序传递给着色器的只读常量数据。在顶点着色器中,这些数据通常是变换矩阵、光照参数、颜色等。由 uniform 修饰符修饰的变量属于全局变量。 2021-11-12 Learning OpenGL #Graphics #OpenGL
Pipeline and Shading 光栅化 与 Triangles and Z-Buffer 一样的流程 计算三角形的包围盒(bounding box) 遍历包围盒判断点是否在三角形内 求解重心坐标并进行插值校正 更新深度值 这里需要计算颜色插值(color)、向量插值(normal)、纹理坐标插值(texcoords)和着色点坐标插值(shadingcoords) shadingcoordsGPU 先进行观测变换(Viewi 2021-11-12 图形学 #Graphics #GAMES
Linux 内核 --offsetof 和 container_of 1#define offsetof(type, member) ((size_t)&((type *)0)->member) offsetof:获取结构体中成员的偏移位置,将地址 0 强制转换为 type 类型的指针(编译器认为 0 是一个有效地址,即 0 是type指针的起始地址),然后再引用 member 成员(对应的就是 ((type *)0)->member,即偏 2021-11-12 Linux #macro #linux
Triangles and Z-Buffer 投影矩阵 透视投影矩阵推导 对于正交投影(Orthographic Projection)需要把长方体 进行标准化成正方体,相应的变换矩阵是先进行平移变换(将长方体的中心与原点重合),再进行缩放变换(由于标准化的正方体的边长是 2,长宽高要归一化到 2),即: 对于透视投影(Perspective Projection),思路是把视锥体“挤压”成长方体,再对长方体 2021-11-09 图形学 #Graphics #GAMES
哈希表 哈希表 哈希表,也叫散列表,它是基于快速存取的角度设计的,是一种典型的“空间换时间”的做法。它可以提供快速地插入和查找操作。 哈希表函数的构造方法 直接定址法 (、 为常数),即取关键码的某个线性函数值为哈希地址,不会产生冲突,但要求地址集合与关键码集合大小相同。因此,对于较大的关键码集合不适用。 除留余数法 ( 是一个整数),即取关键码除以 的余数作为哈希地址。使用除留余数法,选取合适的 2021-11-08 数据结构 #数据结构 #哈希表