我正在设计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
这会因设备状态切换而导致性能下降,还是运行时会将输入布局识别为已经设置并返回的布局?
答案 0 :(得分:1)
虽然我也找不到与InputLayout已经设置有关的任何内容,但你可以通过调用ID3D11DeviceContext :: IAGetInputLayout或通过保持自己的引用进行内部检查来获得指向输入布局的指针,这样你没有调用你的ID3D11DeviceContext对象。
答案 1 :(得分:0)
据我所知,它应该检测到没有变化,因此要忽略呼叫。但它可以很容易地测试 - 只需每次渲染调用此方法10000次,看看FPS下降有多糟糕:)