C++
文章平均质量分 52
张Da夫
有志青年
展开
-
Shadow技术-起点
起因 项目的Shadow开始出现了问题,有2个BUG报到了我的身上 比较薄的Mesh出现了漏光(Light leaking)现象 Cube旋转到一定角度,表面出现了“瑕疵”(Shadow Acne) 我开始意识到,确实需要一套比较完备、可控的阴影方案了 对Shadow的积累 目前我对Shadow技术的积累,仅限简单的Shadow Map原理和知道CSM大致的实现方式。 在看到前面两个BUG的时...原创 2020-03-17 00:21:22 · 841 阅读 · 0 评论 -
C语言读取文件中文本模式和二进制模式的区别
一、疑惑 在学习C语言读取文件的时候,首先学习到的是C语言读取文件时分文本模式和二进制模式。给好多人造成疑惑,文件存储时要分类?二进制存储和文本存储完全不相同?对于纯文本必须使用文本模式?对于纯数字必须使用二进制模式?如果你对这些有疑惑,这篇文章适合你,如果你是来看函数时如何使用的,可能你要另寻他处了。 二、明白关键一点 任何数据在内存中或者硬盘上的存储都是1、0组成的序列,从硬盘、原创 2016-07-22 16:14:58 · 6669 阅读 · 2 评论 -
C++中使用sigaction结构体名和函数名冲突的问题
1、某一个类A,有一个无参构造函数,能否使用如下代码建立a对象?(在完美世界的笔试题中遇到过相似问题,《The C++ Programming language》书中也提到过) A a(); 2、linux信号中有一个sigaction系统调用和sigaction结构体,在使用如下代码: sigaction act; sigemptyset(&act.sa_mask); act.原创 2017-06-19 21:33:02 · 1153 阅读 · 0 评论 -
函数调用过程&栈帧&调用约定
函数调用过程 Procedure 参数传递 考虑函数调用:func(1, 2) 需要把1和2这两个参数进行传递,这里的参数传递可以通过两种方式: 1.参数入栈(内存) 2.参数传递到寄存器 大多数情况下,也是C\C++的默认形式是通过栈进行传递,因为虽然寄存器传递方式快但是寄存器数量有限 参数压入栈中(内存),CS:IP指向下一条指令地址需要进行跳转到函数入口就需要进行原地址的保存,这也是通过压入...原创 2019-07-12 21:04:48 · 654 阅读 · 0 评论 -
可变参数的实现原理
可变参数 参数个数可变 参数类型可变 原理概述 由于在函数调用时,参数通过栈进行传递(stdcall、cdecl)而且参数入栈时会按照顺序依次入栈。 所以在被调用的函数内,知道了第一个参数的地址就可以根据类型获得其他参数的地址从而获取参数的值. 这里需要注意的一点: 上面提到的stdcall和cdecl是说明这两种参数都是通过栈传递,但是只有cdecl支持可变参数,因为cdecl由调用者维护栈...原创 2019-07-13 18:09:40 · 684 阅读 · 0 评论