摘要:
同步和异步是一双相对的概念,阻塞和非阻塞是另一双相对的概念,即同步 != 阻塞,异步 != 非阻塞。 1.同步与异步 同步是指在发布任务(过程调⽤)时,必须一项一项任务(过程调⽤)进行安排,只有在等待前置任务(过程调⽤)出结果后才能安排后继任务(过程调⽤)。异常是同步的,即在发生异常的时刻,系统会立 阅读全文
摘要:
用户态与内核态 用户态和内核态是操作系统的两种运行级别。 用户态拥有最低的特权级, 运行在用户态的程序不能执行某些特权指令(或者执行的结果不同),也不能直接访问操作系统内核数据结构和程序;只能受限的访问内存, 且不允许访问外围设备。占用处理器的能力可以被剥夺, CPU资源可以被其他程序获取。 内核态 阅读全文
摘要:
字节存储模式 ⼤端模式:是指数据的⾼位字节保存在内存的低地址端,⽽数据的低位字节保存在内存的高地址端。 ⼩端模式,是指数据的⾼位字节保存在内存的⾼地址端,而数据的低位字节保存在内存的低地址端。windows10是这种模式。 网络字节序 TCP/IP各层协议将字节序定义为大端,各主机处理网络流时,需要 阅读全文
摘要:
1、并发性: 是在计算机系统中同时存在多个程序,宏观上看,这些程序是同时向前推进的。 在单CPU上,这些并发执行的程序是交替在CPU上运行的。 程序并发性体现在两个方面: 用户程序与用户程序之间的并发执行。 用户程序与操作系统程序之间的并发。 2、共享性: 资源共享是操作系统程序和多个用户程序共用系 阅读全文
摘要:
原文:浅谈 C++ 中的 const 和 constexpr,原文中“用constexpr修饰某物并不保证它一定在编译时被计算,也可以在运行时被计算”,我觉得是错误的。 const和constexpr都可以来修饰对象和函数。 修饰对象的时候两者之间最基本的区别是: const修饰一个对象表示它是常量 阅读全文
摘要:
1、值传递 值传递,会将实参的值拷贝到被调函数的作用域中,产生一个局部变量,该局部变量的变化不会影响实参。 2、指针传递 指针传递,其本质上也是值传递,传递的值是一个地址。在被调函数的作用域中改变局部指针变量的值,是不会影响原实参指针的。但是局部指针变量可以进行解引用,对其引用对象进行修改。 3、引 阅读全文
摘要:
1.智能指针的作用和定义 智能指针的作用是管理指针所指向的内存的生命周期,能够管理(控制)该内存的共享和释放,避免用户在使用完该内存后忘记释放,造成内存泄漏。 智能指针是普通(原生的,即未封装的)指针的封装,在提供普通指针的功能同时,管理指针所指向的内存空间,当智能指针的实例超出其作用域是,会自动调 阅读全文
摘要:
该软渲染器的意义在于深入学习渲染管线的流程,在不使用图形API的情况下,实现对三维模型的渲染。 已实现目标 1、透视投影和透视校正每个顶点参数插值。 2、在NDC空间进行背面剔除。 3、采用 Clamp 纹理寻址实现纹理采样。 4、实现Z 缓冲(反转 z)、深度测试,模板缓冲和模板测试。 5、实现 阅读全文
摘要:
(本文翻译自Real-Time Rendering 4th Edition) 渲染流水线的主要作用是,在给定的一个虚拟相机、一些三维物体、光源以及其他的条件下,生成或渲染出一张二维图片。因此,渲染流水线是实时渲染最基本的工具。在图1中描绘了渲染流水线的处理过程。二维图像中的物体的位置和形状取决于它们 阅读全文
摘要:
1、坐标系 笛卡尔坐标系是游戏程序员最常用的坐标系,它用两个或三个相互垂直的轴来描述二维和三维空间的位置。点可以由元组(x,y)和(x,y,z)表示,其中的各分量是指从原点沿各轴到点的距离。 图1 笛卡尔坐标系 在三维笛卡尔坐标系中,要安排三个相互垂直的轴,我们有两种选择:右手和左手。左右手坐标系的 阅读全文