游戏各个知识小点汇总
抗锯齿原理记录
SSAA:把成像的图片放大N倍,然后每N个点进行平均值计算。一般N为2的倍数。比如原始尺寸是1000x1000,长宽各放大2倍变成2000x2000。
举例:
原始尺寸:
放大2倍后
最后平均值计算成像:
MSAA:比起SSAA少了对扩大后采样点的shading。意思就是SSAA原点是红色,放大了4倍4个采样点还是红色并缓存记录MSAA,少了这步直接使用原像素点颜色
少了N-1倍的采样着色性能省了一些,尤其在片源着色器写了大量算法时比较明显。
计算采样点的颜色比重拿三角形覆盖扩大后的采样点质心来获取。
摘自:
https://www.zhihu.com/question/654069556/answer/3478445466
内存对其
内存对齐是cpu为了更快内存访问速度而设计,可以一次取N个字节而不是1个1个字节取。
测试:
如果没有内存对其,a是8个字节,c是4个字节总共12个字节。因为有对其,所以8个占了一块,另外一块也得是8,所以变成了这样
那我在加上一个1个字节的char b
由于c是4个字节未占满8个字节所以b会继续利用剩下的字节去填满。结果还是16
增加alignas 可设置块的大小。但这个设置必须大于内含元素最大字节。
使用方式:
强行改成4个字节报错
正则表达式Regex用法和常见的匹配
以C#为例:
这里有几个()就多出个组。因为有3个()分别是(version:),([1-9]\\d{3}),([.]) 加上自身就是4组。
正则规则不细说了,看看就会了。
记录一些常用的:
//匹配任意数字
Regex.IsMatch(value, @"^[+-]?\d*[.]?\d*$");
//匹配正整数
Regex.IsMatch(value, @"^[0-9]+$");
//匹配身份证号
Regex.IsMatch(value, @"^([1-9]\d{5})(\d{4})(\d{2})(\d{2})(\d{3})(\d|X)$");
//匹配国内电话号
Regex.IsMatch(value, @"^1[3-9]\d{9}$");
//密码 必须包含一个大写字母一个小写字母一个数字一个符号 且大于8位
Regex.IsMatch(value, @"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@\#$%^&\*\\\(\)])^.{8,}$",RegexOptions.Singleline | RegexOptions.Multiline);
//以.com为结尾的邮箱
Regex.IsMatch(value, @"^[A-Za-z0-9]+@[A-Za-z0-9]+(\.com)+$");
//日期 yyyy/mm/dd 但没有判断月份和日期的准确性
Regex.IsMatch(, @"^\d{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$");
//匹配汉字
Regex.IsMatch(value, @"^((?![\u3000-\u303F])[\u2E80-\uFE4F]|\·)*(?![\u3000-\u303F])[\u2E80-\uFE4F](\·)*$");
//url地址
Regex.IsMatch(value, @"^(?:(http|https|ftp):\/\/)?((|[\w-]+\.)+[a-z0-9]+)(?:(\/[^/?#]+)*)?(\?[^#]+)?(#.+)?$");