自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++:Memory Management

浅谈C++内存管理new和delete在C++中,我们习惯用new申请堆中的内存,配套地,使用delete释放内存。class LiF;LiF* lif = new LiF(); // 分配内存给一个LiF对象delete lif; // 释放资源lif = nullptr; // 指针置空,保证安全与C的malloc相比,我们发现,new操作在申请内存的同时还完成了对象的...

2019-09-28 18:35:00 429

转载 C++:Copy & Reference Count

浅拷贝、深拷贝通常,我们会按如下方式书写拷贝构造函数:class LiF {public: LiF(int _lif = 0) : lif(_lif) {} // 默认构造函数 LiF(const LiF& l) : lif(l.lif) {} // 拷贝构造函数private: int lif;};这是正确的。但是,如果数据成员包含指针类型的...

2019-09-19 20:58:00 122

转载 C++:Special Member Functions

Special Member Functions区别于定义类的行为的普通成员函数,类内有一类特殊的成员函数,它们负责类的构造、拷贝、移动、销毁。构造函数构造函数控制对象的初始化过程,具体来说,就是初始化对象的数据成员。构造函数的名字与类名相同,且没有返回值。构造函数也可以有重载,重载区别于参数数量或参数类型。与其他成员函数不同的是,构造函数不能被声明为const,对象的常量属性是在...

2019-09-19 12:33:00 138

转载 C++:Overload

重载函数签名是指函数的参数个数,参数类型以及参数的顺序。重载的定义是:在同一作用域内函数签名不同但函数名相同的函数互为重载。// 以下几个函数互为重载void print();void print(int a);void print(double a, int b);void print(int a, double b);void print(string a, doubl...

2019-09-17 21:21:00 139

转载 C++:Name Lookup & Best Match

名字查找每当一个变量或者一个对象出现,编译器都会进行名字查找(name lookup),以确认这个变量或对象的具体属性。一般情况下,程序会从变量出现的地方开始向上查找,由内向外查找各级作用域直到全局作用域,找到同名的变量声明即停止,若最终没找到则报错。#include <iostream>using namespace std;int a = 0;int mai...

2019-09-17 20:30:00 114

转载 C++:class

class类是C++的一个重要概念,也是面向对象的一个重要内容。类的行为类似结构体,但功能比结构体的更强大。类是定义该类对象的一个模板,它告诉我们,一个类应该具有什么内容。声明、定义类用关键字class声明、定义。class LiF1; // 声明一个类class LiF2 {}; // 声明并定义一个类如果仅作声明,在声明之后定义之前,它是一个不完全类型,这时只能定义指向...

2019-09-16 18:05:00 122

转载 C++:inline

inlineinline是C++提供的一个关键字,它用于函数定义之前,表示把函数定义为内联函数。内联函数的含义是:在函数调用点把函数体直接展开,取代函数调用。inline int getZero() { return 0;}int a = getZero();如果上述函数没有定义为inline,那么在声明a时,程序实际上的工作是,把getZero()函数压入栈中,执行函...

2019-09-15 14:07:00 112

转载 C++:const

constconst是C++提供的一个强大的关键字,const的用法非常多,但总的来说,const的作用只有一个:保证被修饰的内容不会被程序所修改。const基本用法对一个类型的对象使用const修饰即限定这个对象是只读的,不能进行修改操作,由于无法进行修改操作,这也就要求我们在声明const对象时必须同时赋值或初始化。const对象的初始化一般是如下形式:const TypeN...

2019-09-14 19:41:00 100

转载 C++:= delete

= deletedelete的由来如之前提到的,在没有声明默认特殊成员函数的时候,编译器会自动帮我们补充,但有时候我们并不希望存在这些函数,比如:我们不希望某个类通过拷贝的方式实例化一个新的对象。就算我们不定义拷贝构造函数和重载拷贝赋值运算符,编译器也会为我们自动完成。#include <bits/stdc++.h>using namespace std;clas...

2019-09-13 17:08:00 232

转载 DirectX:New Project in VS2019

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。官方示例工程在www.d3dcoder.net下载d3d12工程之后便可以基于官方工程构建自己的项目。这里选用的IDE为VS2019,在新建项目时选择C++空项目,然后把官方示例工程的Common文件夹复制到自己的工程目录,为了测试运行结果,同时把官方工程第六章有...

2019-09-12 13:00:00 578

转载 DirectX:Transformations

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。Transformations前面提到了两种变换:仿射变换和坐标变换。仿射变换又包含线性变换。仿射变换和坐标变换的区别在于有没有改变物体本身的属性。坐标系是参考系的一种抽象,物体有没有发生改变也是相对而言的,所以,仿射变换和坐标变换在数学上其实是等价的。对一个物体...

2019-09-10 21:21:00 106

转载 DirectX:Change of Coordinate Transformation

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的坐标变换。坐标变换坐标变换是坐标系变换的简称。在计算机图形学中,经常需要在不同的坐标系研究同一物体,这时就需要坐标系的变换。坐标变换的对象可以是点或者向量,这里的点指点的位置,对于这两者的坐标变换是有区别的,需要分开...

2019-09-10 21:17:00 130

转载 DirectX:Affine Transformation

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的仿射变换。仿射变换仿射变换是在线性变换的基础上加入平移变换得到的。之前线性变换的对象都是3维向量,向量只表示方向,对向量作平移是没有意义的,因此平移只能作用于点。齐次坐标表示法可以统一对点和向量的平移变换。齐次坐标...

2019-09-09 22:49:00 110

转载 DirectX:Linear Transformation

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。本篇主要是顺着DX12龙书的节奏温习线性代数中的线性变换。线性变换定义关于线性变换的定义有很多种,这里参考龙书,给出3D图形学的线性变换定义。\[\begin{aligned}&数学函数\tau是线性变换当且仅当:\\&\tau(\vec...

2019-09-09 22:42:00 105

转载 DirectX:Matrix

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。Matrix in DirectX3D数学最重要的就是描述几何体的变换,其中肯定会涉及到矩阵。本篇的主要内容即是DirectXMath库中与矩阵相关的部分。矩阵首先温习矩阵运算的几个特点。矩阵加法满足交换律和结合律矩阵A、B相乘有意义,当且仅当A的列数与...

2019-09-09 22:41:00 157

转载 DirectX:Vector

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。Vector in DirectXShader的编写离不开数学运算,尤其是向量矩阵类型的运算,DirectX为我们准备了一个完备的数学库DirectXMath.h,里面封装了常用的向量矩阵类型,并且重载了许多方法,如点积、叉积、矩阵乘法等。DirectXMath是...

2019-09-09 22:40:00 96

转载 DirectX:Before We Start

Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考《DirectX 12 3D 游戏实战开发》。开始前的准备DirectX早在Win8及以上的版本中集成到了Windows SDK中,DirectX库采用的指令集为SIMD SSE2。因此,在每次构建DirectX工程时,我们都需要做一些配置,以便发挥这套指令集的性能优势。我们通常采用Visual Studi...

2019-09-09 22:39:00 85

转载 Extra:Cg Math Functions

常用Cg函数数学函数abs(x):绝对值// float类型的实现float abs(float x) { return max(-a, a);}sin(x):正弦,输入为弧度// float类型的实现float sin(float a) { /* C simulation gives a max absolute error of less than 1.8...

2019-05-04 20:42:00 131

转载 Extra:Variable Types

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。在我们使用Cg或者HLSL进行shader编写的过程中,常常涉及到一些变量类型的使用,其中数字类型有三种最基础的变量类型:float,half,fixed,由此延伸出的还有向量类型以及矩阵类型,如:float3,half4x4。虽然都是表示数字,但它们之间的差别还...

2019-05-04 10:49:00 121

转载 2.1:CGPROGRAM

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。前言经过前面两个章节的铺垫,我们对渲染以及Unity Shaderlab相关的知识已经有了大概的认识,接下来将要学习的就是Shader最重要的部分,SL(Shader Language),着色器语言。目前主流的着色器语言有HLSL,GLSL,Cg。三者在语法上也...

2019-05-03 21:55:00 138

转载 FairyGUI TextField

记录一个在使用FairyGUI的TextField时遇到的坑。TextField有一个文本模板功能,可以实现类似占位符的功能,如:{ number = 0 },然后我们可以在脚本中修改number的值:textField.SetVar("number", "1").FlushVars();。运行时我们会发现,我们可以成功获取UI下的TextField,但修改操作却无法生效,实在让人费解...

2019-04-28 19:57:00 537

转载 Reflection

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本文原更新于作者的github博客,这里给出链接。Reflection是什么一般的程序的操作对象是数据(data),但有时候,我们想要在运行期获取有关程序自身的信息,例如我们想在编译器界面有一个类浏览器,这个时候,我们需要获取的就是有关程序集(program assemblies)自身的信息,这些信息我们称为元数...

2019-04-21 14:14:00 111

转载 Attribute

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本文原更新于作者的github博客,这里给出链接。[Obsolete]public static void Func() { // ...}Attribute是什么注释是对程序源代码的一种说明,在编译时会被编译器丢弃,不会影响程序的执行,但有时候我们希望“注释”可以影响到程序。这个时候,Attrib...

2019-04-21 14:13:00 123

转载 Type Conversion

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本文原更新于作者的github博客,这里给出链接。什么是转换转换是接受一个类型的值并使用它作为另一个类型的等价值的过程。转换后值等价,类型为目标类型。转换的分类一般转换从转换的方式来看,可以分为显式转换和隐式转换。显示和隐式最主要的区分点在于,这种转换是否让这个“值”的描述更加“精确”,如果是,那么则是显示...

2019-04-19 22:15:00 187

转载 Event and Delegate

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本文原更新于作者的github博客,这里给出链接。委托委托的实质是一个类。// 委托定义delegate ReturnType DelegateName([parameters]);// 委托声明DelegateName delegateInstance = new DelegateName();// ...

2019-04-19 22:13:00 93

转载 Interface

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本文原更新于作者的github博客,这里给出链接。OOP中另一个重要的概念:Interface(接口)。接口在形式上与类相似,但又和类有所区别。接口的抽象定义是:描述一类物体具有的特征。例如:人可以行走,猫可以行走,虽然两者的具体行为不一致,但我们都可以把这个行为抽象成“行走”这个描述。下面是C#编程中的接口特征。...

2019-04-19 22:13:00 101

转载 1.5:Unity Render Pipeline

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。这一节主要是为上一节中没有提到的一些概念作补充。上一节提到了Unity中渲染路径的概念,为了更好地理解并使用Unity,我们有必要了解有关渲染路径的详细信息。Unity Render PipelineUnity作为引擎,为我们处理了许多渲染有关的行为细节,最...

2019-04-19 22:11:00 715

转载 1.4:SubShader

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。在了解了渲染流水线之后,我们可以开始SubShader的学习了。什么是SubShader我们在1.1节中提到:SubShader:SubShader是Shader代码的核心部分。由于运行终端的不同,其所能支持的渲染等级也是不同的,所以我们在必要时可以编写多...

2019-04-19 22:09:00 173

转载 1.3:Render Pipeline and GPU Pipeline

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。在学习SubShader之前,我们有必要对 Render Pipeline (渲染流水线)和 GPU Pipeline (图形硬件流水线)有一个比较细致的了解。这是一篇干货,内容主要参考了《Unity Shader入门精要》、《Real-Time Renderin...

2019-04-01 12:01:00 417

转载 1.2:Properties

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。上一节我们了解了一个Shader的基本结构,这一节,我们从 Properties 代码块入手,了解Shaderlab的参数组成。如何声明Properties常规属性Properties的属性常用的主要有以下几类: Numbers (数值)、 Colors(颜...

2019-04-01 11:54:00 115

转载 1.1:Get Started with Unity Shaders

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。第1章开始正式进入Unity Shader的学习。什么是Shader本系列约定,如无特殊说明,文中出现的Shader均基于Unity Shaderlab每一门编程语言的诞生都是为了方便人们和计算机进行更好地交互。Shader是一门着色器语言,它作用于计算机R...

2019-04-01 11:51:00 106

转载 0.3:Before We Start

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。需要做的准备首先肯定是需要安装Unity,我这里选择的版本是Unity version :2018.3.7f1。学习任何事物都离不开趁手的工具,Shader也不例外。我们可以选择Sublime Text,JB Rider Free For Student,甚至V...

2019-04-01 11:41:00 126

转载 0.2:Game and Art

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。通过上一节的学习,我们对游戏美术和游戏开发已经有了比较基本的了解。那么,该如何开发一款游戏呢。游戏是如何被开发的世界上第一款游戏《SpaceWar》是在一台小型计算机上运行的,在当时,只需要编写少量的代码即可写出一款游戏。尽管如此,游戏开发也并不容易。现在,游...

2019-04-01 11:39:00 92

转载 0.1:Why are We Addicted to Games

文章著作权归作者所有。转载请联系作者,并在文中注明出处,给出原文链接。本系列原更新于作者的github博客,这里给出链接。前言本系列仅用于记录并分享自己的学习过程,以及学习过程中遇到的问题,如有错漏,欢迎讨论。(第0章是Shader系列的引导部分,已经有计算机图形学基本认识、游戏开发基础知识、Unity基础的可以选择性跳过。)引言从冯诺依曼到现代计算机,从简单的计算结果呈现到丰...

2019-04-01 11:27:00 139

空空如也

空空如也

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

TA关注的人

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