- 博客(19)
- 问答 (1)
- 收藏
- 关注
原创 【优化技巧】 SIMD - Single Instruction Multiple Data
SIMD - Single Instruction Multiple Data 现代微处理器中使用一条指令进行多个数据运算的技术对于矢量运算和矩阵运算可以迅速地执行被广泛运用于游戏引擎的数学库中对于矢量和矩阵的运算(比如使用矩阵对矢量进行变换)将四个浮点数打包进入128bit的寄存器于是对于加法和乘法,可以使用一条指令对四个浮点数同时进行运算四个浮点数可
2017-12-19 15:32:04 2191
原创 编程技巧干货笔记 【Vector / Set OR Map ?】
数据结构的选择取决于存储的数据类型、数据的数量、实现的操作、操作的频繁程度等等因素【使用Set】当需要存储一串对象时通常希望对象在表中只出现一次那么可以直接使用集合 Set , 不插入相同的元素, 且插入、删除以及查询操作时间均为 O(logn)貌似是最佳选择?但是却不一定的大部分集合的实现是使用红黑树因此每次插入一个元素都要申请一块内存,删除一个元素的时候都会释放
2017-09-11 10:24:55 330
原创 编程技巧干货笔记 【关于内联函数】
虽然博主使用内联函数也已经有不短的一段时间但是有些东西仍然是第一次知道,所以记录下来喽...【内联函数的一些优点】1.内联函数可以消除宏的很多缺陷也更易于使用2.同时它同样消除了函数调用的开销而获得比普通函数更高的效率3.内联函数可以使编译器对代码进行进一步的优化4.宏不存在指定类型的参数从而可以对多种类型使用,使用内联函数模板可以达到相同的效果且类型安全
2017-09-11 09:29:25 384
原创 编程技巧干货笔记 【快速伪随机数生成】
游戏中自己实现一个伪随机数生成器在调试的时候会很方便下面这个伪随机数生成方法是在"雷神之锤"的源码中看到的,记录下来,方便以后使用首先有一个随机数种子,相同的种子将产生出相同的伪随机数列int seed = 1; // 随机数种子void q_srand(int s){ seed = s;}快速生成一个整型伪随机数,里面比较神奇的数字就
2017-08-30 09:41:22 632
原创 编程技巧干货笔记 【Copy-On-Write】
"Copy-On-Write" 从字面上理解就是 "写入时复制",博主对它的翻译是:"写入时才复制"它本身是一个技术,在 Linux、STL 等都有应用//////////////////// 例子 buff 开始 /////////////////////一只老鼠在看一本笑话书,这时候狗来了也想看( 狗不需要再买一本,只要两个人一起看就好了啊 )但是这是老鼠突
2017-08-29 10:46:13 341
原创 编程技巧干货笔记 【数组范围界定】
我们通常会遇到需要使用一个下标访问数组某个元素的情况它可能会像这样 : public Data getDataByIndex(int index);而内部实现可能是很简单的这样: Data getDataByIndex(int index){ if(index >= 0 && index < lenOfList) return list[index];
2017-08-29 10:08:50 925
原创 编程技巧干货笔记 【关于一些运算符的效率】
下面有两行实现同样功能的代码 str = str + 'i'; str += 'i';它们都只是在字符串的末尾添加了一个 'i'但是就效率而言, 是优于 的其效率相差在于返回值前者需要将加法运算的结果构造一个新的字符串返回再赋值给 str ,而且 ‘+=’ 运算的返回值是 str 的引用后者直接在当前字符串上修改然后返回
2017-08-28 15:43:52 374
原创 编程技巧干货笔记 开篇
博主大一的时候学完 C 语言自恃"熟练掌握",傲世天下英勇豪杰直到后来一次又一次地被虐甚至被秒杀之后才知道原来 学 无 止 境 这四个字真的不只是说说看...然而不管是学什么东西,总有一些技巧性的东西,十分宝贵和难得这些东西除了前辈的指点和自己的经验之外,还有一些是无意之间听来的虽然技巧不能主要决定质量的好坏,却也不乏是点睛之笔 一份优雅的代码里,总是有一些
2017-08-28 14:56:00 295
原创 Irrlicht 源码学习笔记 【irrstring.h】
Irrlicht 中自己实现了一个字符串类实现了一个字符串的模板,使用这个模板可以很容易定义出 ascii 字符串和 unicode 字符串该类的实现相对简单,没有用到类似于 stl 中 string 的 copy-on-write 这些东西字符串中私有成员变量有三个,分别是:记录内存空间的指针 - array申请的内存空间可以存储元素的个数 - allocat
2017-08-28 11:43:56 508
原创 Irrlicht 源码学习笔记 【CFileList.h/cpp】【CReadFile.h/cpp】【CMemoryReadFile.h/cpp】
io 部分主要是对于输入输出的操作这几段代码中也只是一些相对简单的操作【CFileList.h/cpp】CFileList 类实现了 IFileList 接口用于列举某个目录下的所有文件并可以判断某个文件是否位目录,以进行递归搜索类的内部定义了一个结构体 FileEntry 保存文件的信息 —— 包括 "文件名" "文件大小" "是否位目录"并声明了一个
2017-08-25 15:34:56 430
原创 Irrlicht 源码学习笔记 【Color.h】
不知道现在这个顺序来说现在看这个文件是不是合适的但是 Color 的操作也是最基本的操作之一,而且也很简单总之先学习一下记录下来吧 ԅ(¯﹃¯ԅ)
2017-08-20 21:18:51 742
原创 Irrlicht 源码学习笔记 【plane3d.h】【plane3dex.h】
Irrlicht 中使用 plane3d 表示一个 3D平面plane3d 中使用 平面上一点(MPoint) 和 平面法线向量(Normal) 来唯一标识一个平面( 当然标识一个平面还可以使用 三个点 或者 一条直线 AND 直线外一点 ,但是它们不方便于运算)( 比如 对正面的表示,如果是三个点的话就要根据三个点的排列顺序是顺时针还是逆时针来判断 )( 但是有法向量的话
2017-08-20 15:06:08 1018
原创 Irrlicht 源码学习笔记 【vector3d】
vector3d 模版表示一个 3D 向量3D 点和 3D 向量是3D图形学里最基础的东西里面有一些方法是需要一点 3D 图形学基础的,但是也非常简单喽
2017-08-18 20:57:06 984
原创 Irrlicht 源码学习笔记 【line2d.h】
Irrlicht 中使用 line2d 模版来描述一个 2D线段并封装了一些 2D 线段使用中常用的方法,依然是很基础也很简单的一部分首先 line2d 中使用两个 vector2d 来描述一个线段这里是将 vector2d 作为点来使用,直角坐标系中两点确定一条线段同样是使用模版很容易实现不同精度四个构造函数0. 无参构造函数,默认是从 (0, 0
2017-08-17 14:10:17 619
原创 Irrlicht 源码学习笔记 【position2d.h】 【vector2d.h】
之所以把这两个东西放在一篇笔记里面是因为 position2d 和 vector2d 很多地方是相同的因为 2D向量 和 2D点 的表示是可以互相转换的 —— 都是 (x, y)只是点(position2d) 更偏重于表示,只有一些简单的运算而 向量(vector2d) 除了表示之外,同时有比较多的计算规则
2017-08-16 16:35:13 519
原创 Irrlicht 源码学习笔记 【IEventReceiver.h】
这个里面做的事情很简单使用枚举对游戏中事件进行了分类并有一个存储事件数据的结构体 AND 一个处理事件的接口【Irrlicht 中枚举体和结构体的命名规范】枚举类型命名以 'E' 打头,表示 Enum枚举中每一个元素以 ‘E’ + 枚举体名下划线分割的每个单词首字母拼接 打头比如枚举体 EEVENT_TYPE 中每一个元素都以 EET 开头结构体类型
2017-08-16 16:02:40 598
原创 Irrlicht 源码 学习笔记 【IUnknown】
【IUnknown】 IUnknown是Irrlicht中绝大多数的对象基类下面翻译Irrlicht中对IUnknown的一段注释 ( 纯本人翻译,水平不高,选择性略过 ヾ(。 ̄_ ̄)ツ。。 )/////////////////////////////////////////////// 翻译 buff 开始//////////////////////////////
2017-08-16 11:44:58 488
原创 Irrlicht 源码学习笔记 【Irrlicht.h/cpp】 【irrTypes.h】 【KeyCodes.h】 【irrmath.h】
这是我看的第一批里面的几个代码文件
2017-08-15 16:44:52 588
空空如也
C math.h sin cos 和查询表
2017-05-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人