一、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&#