自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 如何绘制三角面

文章目录前言一、绘制三角面1.1 判断点是否在三角形内-叉乘法1.2 判断点是否在三角形内-重心法2.1 包围盒3.1 剔除三角形二、完整代码前言上节课我们已经可以绘制直线了,但是还不够,模型都是由三角面构成的,所以这次我们要绘制三角面,以及剔除我们看不到的面。Dmitry V. Sokolovgamma公式Games101-光栅化(三角形的离散化)Games101-着色(插值、高级纹理映射)本系列主要参考Gams101的相关课程和课件以及Dmitry V. Sokolov的软渲染教程,详

2021-09-07 20:52:42 954

原创 如何绘制直线

文章目录前言一、最简单绘制直线的方法1.1 向量二、Bresenham’s Line Drawing Algorithm2.1 屏幕是离散的2.2 直线方程的应用前言本系列最终是要去绘制mesh的,既然这样我们就需要从最简单的开始,先绘制直线。我们都知道有个算法-Bresenham’s Line Drawing Algorithm。但是为什么要用它,这个才是我们要讲的。参考gamma公式本系列主要参考Dmitry V. Sokolov的软渲染教程,详细教程可阅读参考链接一、最简单绘制直线的

2021-08-29 19:14:57 1769

原创 GAME101-向量、矩阵、变换和齐次坐标

文章目录前言一、向量1.向量表示2.向量运算1)点乘2)叉积二、矩阵运算1.矩阵的乘积三、变换1.线性变换2.平移变换3.齐次坐标1)在齐次坐标下的平移变换2)www运算的意义3)在齐次坐标下的变换前言参考gamma公式这章主要是记录一些数学公式的用法、理解和注意事项。The cleaner the math,the cleaner the resulting code.-Fundamentals of Computer Graphics一、向量1.向量表示在图形学中,没有特殊说

2021-07-02 17:31:11 372

原创 关于字符串常量与指针 - 快速记录暂时未整理

字符串常量储存在.rodata,只读数据区char* a = "Hello";// 或者const char* a = "Hello"printf("Hello");// 这里两个Hello的地址都是同样的 通过反汇编可知1.char* a这种写法是C语言时代的2.const char* a是CPP语言的在CPP中使用第一种写法会报错,在C中并不会报错,所以即使修改值也不会引发编辑器报错,但是在运行时会报错,因为修改了只读区域,产生了异常控制流,强制停止进程运行。所以我个人觉得CPP

2021-04-27 21:10:53 149

原创 深入理解计算机系统(CSAPP) 链接 -笔记

我对链接最通俗的理解可以将一个大型的源文件分解成更小的模块,其目的是更加易于管理,修改合编译这些模块。将一个大型文件分离后肯定是会产生问题的1.符号多重定义要理解符号多重定义,那么就先得明白什么是符号,什么是符号定义,什么是符号解析,什么是强符号,什么是弱符号。符号: csapp中是这样定义符号,每一个符号对应每一个函数,每一个全局变量和每一个静态变量。 int a; void b(); statc int c; // 这些都是符号符号定义: 对该符号进行解释/定义,既为符号定义。

2021-03-29 21:02:24 227

原创 深入理解计算机系统(CSAPP) 实验详解:ShellLab

提示利用测试文件逐步构建tsh,例如先从trace01.txt开始。当在进程在前台运行时(例如我们的tsh),你键入Ctrl+C,那么内核就会发送一个SIGINT信号(信号代码2)给这个前台进程组中的每个进程。也就是说假如你开始创建子进程的时候,没有将子进程的进程组给设置到另外一个进程组(因为创建子进程的进程组ID默认是父进程的进程组ID),那么这个终止信号将会发送到你每一个创建的子进程中,包括前台和后台。然后会就导致你的程序出现bug,sigchld_handler可能会比sigint_handle

2021-03-03 16:32:22 1405

原创 深入理解计算机系统(CSAPP) 实验详解:CacheLab

近一段时间项目太忙导致没有继续,还好最近空下来一些,咱们继续冲!更新历史20210104开始更新本文介绍的是CSAPP书籍中的第四个lab: Cache lab。本实验要求我们实现一个软件高速缓存,以及优化矩阵。通过这个lab我们可以更好的理解缓存以及写出更加对缓存友好的代码。知识预热阅读《深入理解计算机系统》的6.4仔细阅读Cache lab的writeup介绍完上面必须的知识之外,我们就开始吧!实验构成本实验一共分为两个实验,第一个软件高速缓存模拟器,第二个优化矩阵。实验.

2021-01-07 14:02:55 4960 1

原创 深入理解计算机系统(CSAPP) 实验详解:AttackLab

ROP妙处先复习一下ret的动作ret时会将当前%rsp指向的值当作地址弹出,使得%rip程序计数器指到该地址的指令处,这个是通用的说法换一种说法就是,它会直接返回到地址处。需要注意的地方指令是指令,栈是栈不要搞混,不管我们指令如何跳,只要不对%rsp进行操作,我们栈指针就是不会改变,ret会间接改变栈指针,因为它有两个动作(先弹出地址给%rip,然后在给%rsp加8)。明白了上面说的,我们就可以开始讲ROP了touch2 ---->4movq %rax

2020-11-23 17:40:35 4118 1

原创 深入理解计算机系统(CSAPP) 实验详解:BombLab

更新历史20201102开始更新该实验的目的该实验可以提高你阅读汇编代码的能力,以及加深对寄存器,内存和指针的理解,还有调试gdb能力。前言BombLab,一个家喻户晓的实验。我看过的教程中都是这么介绍它的,可见它的魅力和趣味性是如此之大。话不多说,接下来我们就来了解一下该实验吧!环境搭建环境我们参照DataLab里的环境搭建进行。如何使用正确的姿势写代码和测试这里需要额外安装一个环境,就是cgdb,那么我们为什么不直接用gdb呢?答案就是因为cgdb更具方便在调试的时候,简单点

2020-11-04 10:51:25 1937 2

原创 深入理解计算机系统(CSAPP) 实验详解:DataLab

更新历史20200911开始做这个实验该实验的目的该实验的目的是提升对计算机基础信息的理解和操作,例如位,整数,浮动,补码等等。搭建环境环境的搭建很简单,我们遵循以下几个步骤即可下载VM Box,并安装ubuntu然后我们在虚拟机中更新环境,在终端中执行一下命令//更新apt软件源apt-get update//安装sudoapt-get install sudo//安装c/c++编译环境,build-essential软件包列表内包含libc6-dev、libc-dev、g

2020-09-15 20:16:34 9740 6

原创 unity中的设计模式-命令模式

命令模式此篇是专门为unity开设的设计模式篇章,在这里,每一篇都会尽量做到包含C#版本以及unity,unity全部都尽量使用Roguelike2D这个项目去扩展。介绍官方引用:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。个人理解:命令模式就是将一个一个对象的操作给封装成一个对象命令,例如棋子的每一个步行走,我们就可以针对这一对象,将它移动的这个操作,封装成一个命令对象,往后我们就可以很方便的扩展重做和撤销操作。详情请

2020-07-04 16:52:11 287

原创 unity 浅谈MonoBehaviour

MonoBehaviour学于事件函数的执行顺序-unity官方文档概述MonoBehaviour is the base class from which every Unity script derives.When you use C#, you must explicitly derive from MonoBehaviour.MonoBehaviour是所有脚本的基类,所有C#都需要显性的继承MonoBehaviour,这样才能被挂载到game Object上。MonoBehavi

2020-06-26 17:55:55 4730

原创 unity 预制体(Prefab)

预制体(Prefab)unity中的prefab就是类似一个配置文件,而且这个配置文件还可以被继承/变体(Variant),相当于一个强大的配置文件系统prefab支持variant,以及override的操作,还有独立的编辑系统。历史介绍以及源视频prefab分为prefab instance和prefabAsset,大部分操作的是prefabAsset。prefab的一次升级是在2018.3这个版本中,在早期的版本中听说不支持一些嵌套子类的修改,因为没有用过早期版本,所以就不深究了。我现在用

2020-06-26 16:59:06 12834

原创 unity3d-初级-Roguelike2D-学习记录

Roguelike2DRoguelike2D是官方的一项实例教程,其中包含简单的IA,UI等知识点记录预制体

2020-06-18 16:32:17 323

原创 C# 匿名方法

匿名方法匿名方法(Anonymous methods)提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。为什么要用匿名方法?使用匿名方法可以减少一些工作量,简单点来说,就是提升效率,而且在某些场景还很方便。提升效率临时变量局部化方便该方法使用的地方很少,基本上就一处调用实操-两种匿名方法那么接下来我们就来简单的看一下匿名方法。匿名方法有两种。代理匿名Lambda匿名其中

2020-06-17 21:14:55 190

原创 C# 学习过程的记录

可空类型(Nullable)用于对 int,double,bool 等基本变量无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是NullAble 类型的。在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。例如,数据库中的布尔型字段可以存储值 true 或 false,或者,该字段也可以未定义。int a = 3;int? b = 4;int c;// 默认值为0int? d;// 默认值为null数组

2020-06-16 21:05:11 174

原创 C# 委托与事件-导航-简单易懂

委托与事件想要理解委托和事件,那么就必须先去理解什么委托,委托存在那些问题,而事件可以解决什么问题?委托篇C# 中的委托事件篇C# 中的事件在这一篇中你可以理解到委托与事件的区别。...

2020-06-14 17:48:04 156 1

原创 C# 委托与事件-事件篇

事件事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。举一个生活中常见的例子。例如我们关注了某个博主,当他发布新动态的时候,所有关注者都会接受到消息推送,这个就是这个事件的例子----发布以及订阅。例子在下面这个例子中,我们先用常规的方式去实现一个,当玩家死亡时,其他对象要对此做出反应的行为需求。using System;/* * 我们想实现当玩家死亡的时候显示成就和游戏结束 */

2020-06-14 17:26:15 161

原创 C# 委托与事件-委托篇

委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自System.Delegate类

2020-06-14 15:26:05 181

原创 UE4编辑器中的变量筛选机制,以及扩展筛选

(注:有不对的之处望路过大神指正,本文只做记录,非教程,转载请附原文链接。)引言在开发GIF资源的时想着要能像Texture2D资源一样,将资源设置到Image这个widget中,所以顺便研究了一下FSlateBrush。需求是这样的实现一个自定义类的变量筛选,且该类不继承于已能筛选的父类,接口除外FSlateBrush这个结构体中的ResourceObject就是在编辑器中...

2020-01-01 20:31:47 1656

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除