王思淼的博客

GAMES101 第9讲 着色(环境光照, 法线贴图)

纹理不但可以用来表示物体的颜色, 还可以用来记录很多信息. 环境光照 将任何一个方向来源的光照都记录下来, 保存在一个贴图中, 这个贴图就是环境光照贴图. 环境光也可以记录在一个球面上, 这个球面就是环境光照球(Spherical Environment Map) 环境光球展开后可以得到如下的图象: 展开后, 我们可以看到, 在上下边缘部分, 会有较大的扭曲, 为了解决...

GAMES101 第9讲 着色(重心坐标插值, 纹理放大, 纹理缩小)

重心坐标插值 在之前的课程中, 提到了逐顶点着色和逐像素着色, 其中逐顶点着色是在顶点上计算颜色, 然后在三角形内部的像素上对颜色进行插值, 逐像素着色是在每个像素上计算颜色, 但是每个像素的法线也是通过插值得到的. 插值的原因, 内容和方法 重心坐标的计算是为了在三角形内部的像素上进行插值 插值的原因: 根据三角形顶点的属性, 可以通过插值得到三角形内部所有点的属性 插值...

GAMES101 第8讲 着色(着色频率, 实时渲染管线, 纹理映射)

着色频率 把颜色应用在一个面上, 应用在一个顶点上, 或者应用在一个像素上, 这些都是着色的频率. 通常来说, 着色的频率越高, 渲染的效果就越好, 但是性能也就越差. 其中: 如果在顶点上着色(例如图中在矩形的四个顶点上着色), 那么在矩形内部的像素就会使用顶点的颜色进行插值. 逐三角形着色 又叫 平面着色 Flat Shading 一个三角面内的颜色完全相同, 根据三角形的...

GAMES101 第6讲 光栅化(深度缓冲)

深度缓冲 画家算法 画家算法(Painter’s Algorithm): 从后往前绘制, 后绘制的像素会覆盖先绘制的像素 例如下图中, 从后往前绘制, 会先绘制远处的山脉, 再绘制草地, 草地会覆盖部分山脉的像素, 然后绘制树木, 树木会覆盖部分草地的像素, 也会覆盖部分山脉的像素: 但是画家算法有一个问题, 如果两个物体互相遮挡, 那么就会出现问题, 如下图所示: 深度缓...

C++ 智能指针

指针 普通的指针: 指向某个内存区域的地址变量 如果一个指针指向的内存是动态分配的, 那么即使这个指针离开了所在的作用域, 这块内存也不会被自动释放, 从而导致内存泄漏. 如果一个指针指向的是一个已经被释放的内存区域, 那么这个指针就是一个悬空指针, 使用悬空指针会导致不可预知的错误. 如果定义了一个指针却没有初始化, 那么这个指针就是一个野指针, 使用野指针访问内存一般会...