[toc] # 内存对齐 遵循以下三个原则 - 结构体变量的 起始地址 能够被其最宽的成员大小整除 - 结构体每个成员相对于 起始地址的偏移 能够被其 自身大小整除 ,如果不能则在前一个成员后补齐字节 - 结构体总体大小能够 被最宽的成员的大小 整除,如不能,在后面补齐 主要是为了提高内存的访问效率,比如 intel 32 位 cpu,每个总线周期都是从偶地址开始读取 32 位的内存数据,如果数据存放地址不是从偶数开始,则可能出现需要两个总线周期才能读取到想要的数据,因此需要在内存中存放数据时进行对齐。 # 为什么要装箱拆箱 因为 C#...

先 Po 原贴 Author - DBinary [toc] # 公式 # 公式奏凯 我们知道线性插值时就是在两点之间找到当前时间点对应的 Y 值。如下图 我们可以将 P1,P0 称之为控制点 但是这种线性插值的方式没有办法模拟出细节更加完善的曲线,所以贝塞尔提出了这样一个解决办法: 增加控制点。如图,如果我们将控制点增加到三个 那么我们如何 在贝塞尔曲线 规则下找到某一时刻的 Y 值呢?假设我们要求 t=0.85 时的 Y 值,T 可以认为是 X 指 第一步,我们先求出 P0,P1 上 t=0.85 时的值 第二步,求出 p1,p2 上 t=0.85...

感觉这门课必其他的课都偏原理,慢慢补,后面关于这门课的都放这个文档里 地址: https://www.icourse163.org/learn/CAU-45006?tid=1463638445#/learn/content?type=detail&id=1241809228&cid=1264437047 [toc] # 光栅图形学算法 # 直线段扫描转换 像素逼近直线,用有限个点逼近无限个点 可以发现,直线是有锯齿的,因为像素是有限的,所以我们只能做逼近。为了能在屏幕上显示这个逼近的直线,我们需要得到这个逼近线上的每个点...

# 简单插值渲染纹理得到的效果 右图远处会产生摩尔纹,近处会产生锯齿 产生的原因:远处一个像素覆盖了纹理上很大一块区域 如果这时候还用类平均来计算,当然是不对的。但是如果每个像素里面的采样点增加到很大 (超采样), 也可以得到不错的结果.(当然不是好办法) 走样是怎么来的呢? 信号变化速度过快 很大的采样区域,但是采样点很少 需要更高频的采样 (一个像素内取很多点进行采样) 但是上述方法消耗极大,为了避免采样,使用 MipMap 进行范围查询. MipMap 几个特性 (fast,approx (不准),squra), 只能用于近似正方形的范围查询 MipMap...

其实大体思路就是引用计数器嘛 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include<iostream>#include<string>using namespace std;template <typename T>class SharedPtr...

[toc] # 本质 本质上就是绘制了一个 plane 放到摄像机前面,然后在 MeshRenderer 上搞渲染. # 最简易实现 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970using System.Collections;using System.Collections.Generic;using UnityEngine;using...

[toc] https://www.lfzxb.top/what-causes-csharp-invoke-method-by-reflection-slowly-and-how-to-solve-it/ # C# 反 射为什么这么慢 # 反射的设计初衷 在 运行时 非常快的访问我们所需要的代码信息 在 编译时 非常直接的访问生成代码所需的信息 垃圾回收器 / 计算堆栈能够在不对程序加锁 / 分配内存的情况下访问必要的信息 能极大减少一次性需要加载的类的数量 能极大减少给定类型加载时所需要加载的额外类型数目 类型系统数据结构必须在 NGEN...

一切始于那场战争,你们一族的始祖 Solvarg 在追到太阳的那一刻,世界便开始了长达百年的战争。 在那之后,Solvarg 厌倦了争斗,它在这个世界上隐藏了一个可以在战争前终结战争的武器。 第一个场景是教程关卡,玩家需要在这个场景内学会大部分的操作。第二个场景是小战斗教程关卡,玩家需要在这个场景学会小战斗 (即仿命运之轮的战斗) 第三个场景进入到金色老者的场景,老者背对着玩家,独自在诉说着千年前的故事。说罢,玩家将进入到现世。第四个场景,抉择:玩家用爪子触碰到太阳上的爪印,跳跃飞行前在默默地哭泣,并且微笑。第五篇:理由 (这个理由每个人都可以添加,每个人都有救这个世界的理由不是么.)...

最近找到了 Google Poly 的插件 (Unity asset store 里下载就可以), 看里面的 Shader 很棒,所以开这个专栏来进行学习 (重点是应用) 主要是两个 cginc 后面会对每个效果进行代码拆解 # Brush.cginc 和 Particles.cginc # Brush/Partice/Snow # 属性 123456789Properties { _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5) _MainTex...

# 操作系统启动 Basic Input Output System BIOS (加电自检) BIOS 找到 bootloader (选择操作系统), 读到内存,启动系统 # 中断 CPU 速度非常快 (比任何外设都快得多) 外围设备通过一个总线 (硬件) 告诉 CPU 开始执行,触发中断,紧急执行当前发送过来的消息. 操作系统会查找中断处理表,找到哪个程序来处理这个中断,然后跳到对应程序处理这个中断. # 内核态与用户态 内核态访问用户信息时用的就是中断 CPU 支持分级运行 内核态可以访问一切东西,用户态只能访问用户内存.