DirectX 12 学习之路(二)

一、COM
COM 组件对象模型(Component Object Model) 微软的一套软件组件的二进制接口标准,使得跨编程语言的进程间通信、动态对象创建成为可能。
https://zh.wikipedia.org/wiki/%E7%BB%84%E4%BB%B6%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B

二、严格意义上DX12并不直接与本地窗口系统交互,DX12先渲染到DXGI交换链缓冲,然后DXGI再将交换链缓冲中的数据呈现到窗口显示。从Direct3D10开始,由DXGI负责与本地窗口系统交互,Direct3D在DXGI的基础上构建。

三、SIMD(Single Instruction Multiple Data)单指令多数据寄存器(宽SIMD可有128位),利用一条SIMD指令即可同时对4个32位浮点数或整数进行运算。SSE2(Streaming SIMD Extension 2)SIMD流指令扩展2,还有一个SSE。

四、用DirectXMath库的XMVECTOR类型来描述向量,这样就可以在代码中利用SIMD技术进行高效运算。对于类中的数据成员,要使用XMFLOAT2、XMFLOAT3和XMFLOAT4这些类表示向量,并通过加载和存储方法令数据在XMVECTOR类型与XMFLOATn类型之间相互转化。另外,在使用常向量的初始化语法时,应采用XMVECTORF32类型。

五、为了提高效率,当XMVECTOR类型的值被当作参数传入函数时,可以直接存入SSE/SSE2寄存器中而不是栈上。要令代码和平台无关,我们将使用FXMVECTOR、GXMVECTOR、HXMVECTOR和CXMVECTOR类型来传递XMVECTOR参数。传递XMVECTOR参数的规则为:前3个XMVECTOR参数应当用FXMVECTOR,第4个XMVECTOR参数用GXMVECTOR,第5个和第6个XMVECTOR参数使用HXMVECTOR类型,而其余的XMVECTOR类型参数使用CXMVECTOR类型。

六、XMVECTOR类重载了一些运算符来实现向量的加法、减法和标量乘法。另外,DirectXMath库还提供了一些实用函数,用于计算向量的模、模平方、两个向量的点积、两个向量的叉积及对向量进行规范化处理:
XMVECTOR XM_CALLCONV XMVector3Length(FXMVECTOR V);
XMVECTOR XM_CALLCONV XMVector3LengthSq(FXMVECTOR V);
XMVECTOR XM_CALLCONV XMVector3Dot(FXMVECTOR V1,FXMVECTOR V2);
XMVECTOR XM_CALLCONV XMVector3Cross&#

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值