0

我正在 DirectX 11 中设计游戏引擎,我对 ID3D11DeviceContext::IASetInputLayout 函数有疑问。从我在文档中可以找到的内容来看,如果您将输入布局设置为先前设置的设备,则没有提及该功能将做什么。在上下文中,如果我要执行以下操作:

//this assumes dc is a valid ID3D11DeviceContex interface and that
//ia is a valid ID3D11InputLayout interface.
dc->IASetInputLayout(&ia);

//other program lines: drawing, setting vertex shaders/pixel shaders, etc.

dc->IASetInputLayout(&ia);

//continue execution

这会通过设备状态切换导致性能损失,还是运行时会将输入布局识别为与已经设置并返回的布局等效?

4

2 回答 2

1

虽然我也找不到与 InputLayout 是否已设置相关的任何内容,但您可以通过调用 ID3D11DeviceContext::IAGetInputLayout 或通过保留您自己的参考进行内部检查来获取指向已绑定的输入布局的指针,这样您就不会调用您的 ID3D11DeviceContext 对象。

于 2012-01-18T22:21:21.450 回答
0

据我所知,它应该检测到没有变化,因此该调用将被忽略。但它很容易测试——每次渲染调用这个方法 10000 次,看看 FPS 下降有多糟糕 :)

于 2012-01-17T14:40:07.497 回答