【DirectX11】【学习笔记(6)练习】世界和局部坐标系

本节内容主要学习了如何把代码中的变量传到vertex shader中去。通过这个来设置一个静态的摄像机。

但是自己写代码下来,还是对其中的一些细节产生了疑问。比如说:

1.Effect File中的缓冲区和代码中缓冲区(或者结构体)名称是否保持一致?

A:不必保持一致,只需要结构体中的内容保持一致就而可以。

2.如果要设置多个变量个多个EffectFile中的缓冲区怎么办?

A:注意代码中我们调用了d3d11DevCon->VSSetConstantBuffers(0, 1, &constantbuffer);

第一个参数是对应的缓冲槽,当我们在Effect中定义缓冲区时可以指定槽,代码如下:

cbuffer cbPerObject1:register(b2)
{
    float4x4 WVP1;
};

第二个参数是要绑定的缓冲区个数。我们这里只绑定一个。

在CreateBuffer时,就可以创建多个Buffer,如果这里要绑定两个buffer,那么就可以这么调用调用函数

ID3D11Buffer ** test = &constantbuffer;
 test[1] = constantbuffer;
hr = d3d11Device->CreateBuffer(&cbbd, NULL, test);(这里创建两个缓冲区)

在UpdateSubresource函数调用之后,我们把test[1]赋值为constantbuffer(这样test有了两个缓冲区,并且都指向constantbuffer)

最后设置Effectfile中的缓冲区

d3d11DevCon->VSSetConstantBuffers(2, 2, test);

这样我们就可以在EffectFile中的register(b2)和register(b3)中找到设置的两个缓冲区了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值