d3d11 的学习记录

为了制止wind7,在看完ogre教程后发觉还是应该去学习一下图形api,于是看了一个月的d3d11,今天刚好是11月第一天,做一个总结和记录。

d3d系列中最重要的两个东西,一个是设备,device,一个是上下文交互器 context,设备管创建,context管交互,d3d世界中的任何东西,交换链也好,视图也好,都是使用device的某个create函数建立,而建立好之后的工作交给context来做,context是d3d世界的管理者,渲染管线下的每个阶段都有对应的函数可以操作,比如在装配顶点的IA阶段,就使用IASetVertexBuffer与IASetIndexbuffer控制顶点的生成与索引。

D3D中对于顶点的输入有很多格式,你可以输入坐标,法线,纹理坐标,也可以仅仅输入坐标,控制GPU识别这些东西的方法是使用inputLayout,通过指定不同的inputLayout,可以使用不同的装配格式,指定inputLayout非常重要,这直接决定了在着色器中你的输入参数的类型,比如在顶点着色器中,我需要一个拥有pos,tex的类型

“`
struct VertexIn
{
float3 PosL : POSITION;
float2 Tex : TEXCOORD;
};

VertexOut VS(VertexIn)
{
// TODO
}
“`c

那么我必须在inputLayout中指定输入的布局是一个pos,一个tex,否则gpu就会给我的sharder输入我不期望的顶点数据。

还有,让顶点在界面上显示出来,需要将他的本地坐标 * 世界矩阵 * 视图矩阵 * 投影矩阵。视图矩阵和投影矩阵在api中都有一个很方便的实现XMMatrixLookAtLH和XMMatrixPerspectiveFovLH,而世界矩阵则是需要自己去指定的,每一个模型在,不管你是使用3dxmax制作,还是maya制作,导出的是obj还是fbx,里面的每一个顶点都是属于模型的本地坐标系,如果你将世界矩阵定义为单位矩阵,那么模型就会出现在我们的3d世界中心,如果你需要将他平移到别的地方,就要为世界矩阵添加平移的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值