09 2019 档案
摘要:浅谈C++内存管理 new和delete 在C++中,我们习惯用new申请堆中的内存,配套地,使用delete释放内存。 class LiF; LiF* lif = new LiF(); // 分配内存给一个LiF对象 delete lif; // 释放资源 lif = nullptr; // 指针
阅读全文
摘要:浅拷贝、深拷贝 通常,我们会按如下方式书写拷贝构造函数: class LiF { public: LiF(int _lif = 0) : lif(_lif) {} // 默认构造函数 LiF(const LiF& l) : lif(l.lif) {} // 拷贝构造函数 private: int l
阅读全文
摘要:特殊成员函数 区别于定义类的行为的普通成员函数,类内有一类特殊的成员函数,它们负责类的构造、拷贝、移动、销毁。 构造函数 构造函数控制对象的初始化过程,具体来说,就是初始化对象的数据成员。构造函数的名字与类名相同,且没有返回值。构造函数也可以有重载,重载区别于参数数量或参数类型。与其他成员函数不同的
阅读全文
摘要:重载 函数签名是指函数的参数个数,参数类型以及参数的顺序。重载的定义是:在同一作用域内函数签名不同但函数名相同的函数互为重载。 // 以下几个函数互为重载 void print(); void print(int a); void print(double a, int b); void print
阅读全文
摘要:名字查找 每当一个变量或者一个对象出现,编译器都会进行名字查找(name lookup),以确认这个变量或对象的具体属性。一般情况下,程序会从变量出现的地方开始向上查找,由内向外查找各级作用域直到全局作用域,找到同名的变量声明即停止,若最终没找到则报错。 #include <iostream> us
阅读全文
摘要:class 类是C++的一个重要概念,也是面向对象的一个重要内容。类的行为类似结构体,但功能比结构体的更强大。类是定义该类对象的一个模板,它告诉我们,一个类应该具有什么内容。 声明、定义 类用关键字class声明、定义。 class LiF1; // 声明一个类 class LiF2 {}; //
阅读全文
摘要:inline inline是C++提供的一个关键字,它用于函数定义之前,表示把函数定义为内联函数。内联函数的含义是:在函数调用点把函数体直接展开,取代函数调用。 inline int getZero() { return 0; } int a = getZero(); 如果上述函数没有定义为inli
阅读全文
摘要:const const是C++提供的一个强大的关键字,const的用法非常多,但总的来说,const的作用只有一个:保证被修饰的内容不会被程序所修改。 const基本用法 对一个类型的对象使用const修饰即限定这个对象是只读的,不能进行修改操作,由于无法进行修改操作,这也就要求我们在声明const
阅读全文
摘要:= delete delete的由来 如之前提到的,在没有声明默认特殊成员函数的时候,编译器会自动帮我们补充,但有时候我们并不希望存在这些函数,比如:我们不希望某个类通过拷贝的方式实例化一个新的对象。就算我们不定义拷贝构造函数和重载拷贝赋值运算符,编译器也会为我们自动完成。 #include <bi
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。 官方示例工程 在www.d3dcoder.net下载d3d12工程之后便可以基于官方工程构建自己的项目。这里选用的IDE为VS2019,在新建项目时选择C++空项目,然后把官方
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。 Transformations 前面提到了两种变换:仿射变换和坐标变换。仿射变换又包含线性变换。仿射变换和坐标变换的区别在于有没有改变物体本身的属性。坐标系是参考系的一种抽象,
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的坐标变换。 坐标变换 坐标变换是坐标系变换的简称。在计算机图形学中,经常需要在不同的坐标系研究同一物体,这时就需要坐标系的变换。坐
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的仿射变换。 仿射变换 仿射变换是在线性变换的基础上加入平移变换得到的。之前线性变换的对象都是3维向量,向量只表示方向,对向量作平移
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的线性变换。 线性变换 定义 关于线性变换的定义有很多种,这里参考龙书,给出3D图形学的线性变换定义。 \[ \begin{alig
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。 Matrix in DirectX 3D数学最重要的就是描述几何体的变换,其中肯定会涉及到矩阵。本篇的主要内容即是DirectXMath库中与矩阵相关的部分。 矩阵 首先温习矩
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。 Vector in DirectX Shader的编写离不开数学运算,尤其是向量矩阵类型的运算,DirectX为我们准备了一个完备的数学库DirectXMath.h,里面封装了
阅读全文
摘要:Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。 开始前的准备 DirectX早在Win8及以上的版本中集成到了Windows SDK中,DirectX库采用的指令集为SIMD SSE2。因此,在每次构建DirectX工程时,
阅读全文

浙公网安备 33010602011771号