D3D12游戏开发
D3D12游戏开发
言行物恒
潜心从修......
展开
-
D3D12学习笔记3.7——DirectXMath库提供的变换函数
·本次提供变换函数的应用:#include "iostream"#include "windows.h"#include "DirectXMath.h"#include "DirectXPackedVector.h"using namespace std;using namespace DirectX;using namespace DirectX::PackedVector;//重载<<运算符ostream& XM_CALLCONV operator<&原创 2020-09-07 08:13:12 · 257 阅读 · 0 评论 -
D3D12学习笔记3.6——坐标变换矩阵及其相关计算
·坐标变换矩阵满足结合律,类似函数的复合,比如3个标架之间转换结合律,可以提升效率,只需计算两个变换矩阵的乘积,然后就可以直接代入运算了,但是如果先算第一个变换矩阵和原坐标的乘积再算第二个和计算后的值,就会多出一次计算,在后期大量的点中就会出现卡顿现象。·在坐标变换中我们可能知道新的坐标相求出原标架,就要用到逆矩阵。,其中M就是变换矩阵,前提是其可逆。·变换矩阵与坐标变换矩阵之间的关系:1.变换矩阵,在之前的变换学习中很明显就是一种旋转加平移的特殊矩阵。2.坐标变换矩阵,在变换时是相对于原创 2020-09-02 08:17:15 · 1028 阅读 · 0 评论 -
D3D12学习笔记3.5——坐标变换
·首先,我们要知道一个概念,同一种量在不同参考系中的坐标不一样,但是相对于图形来说它并没有改动。了解这个之后,我们来展开说明向量和点的坐标变换。·向量的坐标变换,如果A,B坐标系上都有一个p向量,那么Pa=(x,y),而Pb(x',y')。此时,p=xu+yv,其中u和v表示A坐标系中的x,y方向单位向量,那么对应B坐标系上有一个相同但不同坐标的向量,其实我们只需要将原A坐标系中的u,v单位向量加入B坐标系中就可以轻松的得到pb的向量坐标。·点的坐标变换,也类似,只需要找到原A的坐标轴单位向量找原创 2020-09-01 09:16:43 · 353 阅读 · 0 评论 -
D3D12学习笔记3.4——仿射变换矩阵的几何意义及变换的复合
·提前概念:·刚体变换,其本质是一种保形变换。比如我们从书桌上拿一本书到书柜。在移动书的过程中(平移),很可能改变它的朝向,假设旋转变化为,为定义物体平移操作的平移向量。刚体变换就可以用仿射变换来表示:其含义就是将坐标系原在的坐标系基向量转化为变动后的i,j,k的旋转基向量和以b为3D平移量的线性组合。·变换的复合是根据原文“composition of transformations”我自己翻译的,应该是这个意思,如有误,可更正。·变换的复合顾名思义,我们将之前缩放矩阵S,旋转矩阵R,原创 2020-09-01 08:26:30 · 618 阅读 · 0 评论 -
D3D12学习笔记3.3——仿射变换
·仿射变换是由一个线性变换与一个平移变换组合而成。对于向量来说平移操作是没有意义的,而平移变换只能应用于点。·齐次坐标表示,是将原先的三元组扩展成四元组,第四个坐标w的取值将根据被描述对象是点还是向量而定。具体如下:w=0是向量,w=1是点。·说完两个基本概念后,我们来说说仿射变换的具体公式:。同时矩阵表示法:其中A是一个线性变换的矩阵表示。如果用w=1把坐标扩充为齐次坐标,那么就可以简洁地写作:这样4 x 4矩阵称为仿射变换的矩阵表示。下面来说说平移的一些细节:原创 2020-08-29 09:34:22 · 822 阅读 · 0 评论 -
D3D12学习笔记3.2——缩放及旋转变换
·缩放顾名思义,比如S(x,y,z)=(sx,sy,sz),对某一事物或物体进行的大小比例调整。·缩放变换也是一种线性变换,所以我们有它的矩阵表示法。·缩放矩阵:这就是缩放矩阵,对对应的3D坐标进行不同方向的大小不同的变换。而其逆矩阵:·旋转变换,就是将一个3D向量进行旋转,在推导旋转公式时我们先说一下叉乘的一个重要结论:||nx v||=||n||||v||sina=||v||sina=|||| (其中n是单位向量)这个证明很简单,各位可以推演一下。·叉乘的几何含义就.原创 2020-08-28 11:04:02 · 532 阅读 · 0 评论 -
D3D12学习笔记3.1——变换
·从这一节开始我们探讨变换,那么什么是变换,包含很多种,比如平移、旋转或者缩放这些常见的图形变换就是我们所说的变换,但不仅限于此。·首先我们来说说线性变换,那么什么是线性变换呢?第一,输入和输出均是3D向量(原向量类型),同时当且仅当此函数具有以下性质:其中,k是一个标量。这样的变换同时可以运用在2D,但是,我们主要讨论3D类型。这里不多赘述了。·矩阵表示法,设u=(x,y,z),我们可以将它写作x(i),y(j),z(k)的形式,而i,j,k其实就是坐标轴正方向上的3个单位向量,称为(原创 2020-08-27 10:09:11 · 147 阅读 · 0 评论 -
D3D12学习笔记2.3——DirecXMath矩阵类型
·本节为实际操作,就之前几节的学习进行对DirectXMath矩阵库的学习。·首先说一下在DirectXMath头文件中使用XMMATRIX来表示4x4矩阵类型。·设置函数步骤如下:#include "DirectXMath.h"DirectX::XMMATRIX XMMatrixSet(float m00, float m01, float m02, float m03, float m10, float m11, float m12, float m13, float m原创 2020-08-26 08:45:24 · 264 阅读 · 0 评论 -
D3D12学习笔记2.2——矩阵行列式
·开头我们先说一下单位矩阵的概念,就是一种主对角线都是1,其余元素都是0的特殊矩阵。在矩阵中任何方阵与单位矩阵相乘得原矩阵,所以在这种特殊情况下,与单位举证相乘的式子满足交换律。·下面引入行列式的相关内容,行列式是一种特殊的函数,它以一种方阵输入,输出一个实数。·首先,介绍一下余子阵的概念,其含义就是去除A矩阵中的第i行和第j列的(n-1)x (n-1)矩阵。·行列式定义,这个公式很关键。,我们主要使用的是4*4矩阵的计算,往上的矩阵暂时不计算。·伴随矩阵的概念,设A为一个n x n矩阵。乘原创 2020-08-25 09:13:08 · 321 阅读 · 0 评论 -
D3D12学习笔记2.1——矩阵引入
·从这一节起,我们学习一下矩阵代数。首先,矩阵是一个由m行n列组成的数据阵列。其中的元素或元就是它的每一个数据。·维度就是m*n.通过Mij表示矩阵中的元素,其意义就是i行j列。·行向量和列向量,就是只有一行的矩阵或是一列的矩阵,我们在表示的时候可以使用单下标来表示。·矩阵的运算满足加法交换律、加法结合律,标量乘法对矩阵加法的分配律,矩阵乘法对标量加法的分配律。·矩阵乘法的引入·首先矩阵相乘必须满足乘数的列元素与被乘数的行元素相等,其次矩阵乘法不满足交换律。(各位请自行查找线性组合概念)原创 2020-08-24 09:33:49 · 202 阅读 · 0 评论 -
D3D12学习笔记1.4——向量函数
·本期我们将引入向量的运算函数。下面是实际操作#include "iostream"#include "windows.h"#include "DirectXMath.h"#include "DirectXPackedVector.h"using namespace std;using namespace DirectX;using namespace DirectX::PackedVector;//重载<<运算符ostream& XM_CALLCONV ope原创 2020-08-23 11:05:28 · 267 阅读 · 0 评论 -
D3D12学习笔记1.3——Setter函数的相关应用
·介绍几种函数的运用·XMVectorZero(),XMVectorSplatOne(),XMVectorSet(),XMVectorReplicate(float Value),XMVectorSplatX(FXMVECTOR v);#include "iostream"#include "windows.h"#include "DirectXMath.h"#include "DirectXPackedVector.h"using namespace std;using namesp原创 2020-08-20 10:24:16 · 122 阅读 · 0 评论 -
D3D12学习笔记1.2——DirectXMath库向量运算
·DirectXMath是一个3D数学库,采用了SIMD流指令扩展指令集2,此可以同时对4个32位浮点数或整数进行运算。·使用DirectXMath库。我们需要向代码中添加头文件“DirectXMath.h”和相关数据类型的头文件“DirectXPackedVector.h”,其中DirectXPackedVector.h的代码都在DirectX::PackedVector命名空间中的。·在一切完成之前,需要设置增强指令集SIMD2和浮点模型/fp:fast。·局部变量或全局变量用XMVECTO原创 2020-08-19 09:30:38 · 444 阅读 · 0 评论 -
D3D12学习笔记1.1——向量
“世上之事,无数学则不可解”。为了更好的进入后期的学习中,第一部分的学习我将对数学的相关知识进行学习,所以原创 2020-08-13 10:36:40 · 227 阅读 · 0 评论 -
D3D12游戏开发学习分享——前记
下面的一段时间,我将对D3D12的相关内容进行系统学习,其中学习遇到的相关问题或是学习到的相关内容我会记录在内,各位同学的码友们可以提出你们的意见哟~原创 2020-08-13 06:54:37 · 180 阅读 · 0 评论 -
游戏开发自学第五天
课上内容:SQL学习了有关游标和T-sql语句的应用,计算机组成原理主要讲了进程同步相关的知识,有关临界资源如何分配工作的情况,有关进入区、临界区、退出区、剩余区。自学内容:数据包含变量和常量,有关变量的初始化,如int x=10.c++自带的常量比如INT_MAX表示int数据类型的最大取值。变量的声明还可以使用int x{10}来定义,这样更方便定义,也可int x={}表示定义x初始为0...原创 2019-09-23 07:43:37 · 206 阅读 · 0 评论 -
游戏开发自学第四天
几天的中秋假期,加上两天的满课学习,今天先做个总结。计算机操作系统:讲述了操作系统中进程是怎么被控制的,其中处理机的执行状态有两种,第一系统态,第二用户态,权限差距大小。原语操作是由若干条指令组成的,用于完成一定功能的一个过程。原子操作是指一个操作的所有动作要么全做要么全不做。硬气创建进程的情况有四种,用户登录,作业调度,提供服务,应用请求。创建PCB的过程由申请PCB,分配资源,初始化,就绪...原创 2019-09-18 07:00:06 · 475 阅读 · 0 评论 -
游戏开发:c++自学第三天
昨天满课,没能及时更新,先说一下昨天上课的内容吧。数据库复习了先前基础的增删改查知识,也同时学习了外码和主码,实体实体之间的相互关系,学习了一对一一对多和多对多的关系,还有浅谈了物理模型中索引和聚集的概念,其中索引大概可以认为是书的目录,而计算机则是检索这一过程,聚集中略讲了簇(cluster)的概念。计算机操作系统讲了前趋图的概念,也称有向无环图。程序的顺序执行和并发执行的优缺点,主要在...原创 2019-09-11 08:33:15 · 154 阅读 · 0 评论 -
游戏开发:C++学习第一天
第一次入驻CSDN,之前只是无数次的在CSDN上搜寻资料,算是无数次的擦肩而过吧!今天,自学游戏开发的第一天,学习了c++的数据定义,函数定义等初级知识。希望得到CSDN大牛们的指引,也希望交到志同道合的朋友呀!...原创 2019-09-09 21:01:08 · 133 阅读 · 0 评论