DX学习笔记

编程

项目配置:
C/C++ – 代码生成
配置信息

头文件:
<windows.h> : 为了使用XMVerifyCPUSupport函数检查CPU是否支持SEE2指令集
<DirectXMath.h> : 3D数学库
<DirectXPackedVector.h> : 引入一些相关数据类型
<wrl.h> : 引入Microsoft::WRL::ComPtr(坑爹官方文档写的client.h)
命名空间
DirectX ---------对应<DirectXMath.h>
DirectX::PackedVector ----------对应<DirectXPackedVector.h>

链接:
#pragma comment(lib,“d3dcompiler.lib”)
#pragma comment(lib, “D3D12.lib”)
#pragma comment(lib, “dxgi.lib”)

变换

  1. 所有旋转矩阵都是规范正交矩阵
  1. M为正交矩阵,则必有MT = M-1
  1. 要获得从标架(frame)A到标架B的坐标变换矩阵,需要获取的情报有:标架A的原点在标架B的坐标QB标架A的基向量在标架B中的表示(uB,vB,wB)
    pA = (x, y, z, w)
    pB = xuB + yvB + zwB + wQB
    (上述公式向量皆适用)
  1. 对于点p,有 p = a1p1 + …+anpn(a1+…+an = 1)
    则称(a1,…,an)为p重心坐标(barycentric oordinate)
  1. 使用矩阵A对一个标架的基向量进行变换,此时A的行列式的值反应的是标架中体积(或2D下的面积)的变化。
    注意到旋转矩阵的行列式的值都为1,便是因为旋转矩阵对体积(面积)没有影响
  1. 对于矩阵A,B
    |AB| = |A|*|B|
  1. 空间中有向量a,b,现要使ab平行
    1.叉乘获得旋转轴(要规范化)
    2.点乘获取角度
    3.计算获得通用旋转矩阵

IID_PPV_ARGS(ppType) : 本质是把ppType强转成 void** 类型,D3D12的创建接口实例的API大多都有一个参数类型为void**的待创接口

一定

在调用ID3D12CommandQueue::ExecuteCommandLists方法提交命令列表前
一定要调用ID3D12GraphicsCommandList::Close来结束命令的记录

命令队列可能会引用命令分配器中的数据,因此在没有确定GPU执行完命令分配器中的所有命令之前,一定不要使用 ID3D12CommandAllocator::Reset(void) 重置命令分配器

枚举类型

D3D12_COMMAND_LIST_TYPE

D3D12_COMMAND_LIST_TYPE_DIRECT
接受可以供GPU直接执行的命令

D3D12_COMMAND_LIST_TYPE_BUNDLE
将命令列表打包,减少CPU建立命令列表的开销,驱动会对其进行预处理,使其在渲染期间的执行过程得到优化。
but, 因为Direct3D 12的绘制API效率很高,所以一般不会用到打包技术

D3D12_COMMAND_LIST_TYPE_COMPUTE
仅接受与通用计算有关的命令

D3D12_COMMAND_LIST_TYPE_COPY
仅接受与复制操作有关的命令

类型转化

string to LPCSTR
用c_str()把string 转成const char*就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值