C++ 如何强制DirectX恢复以前的渲染状态?

C++ 如何强制DirectX恢复以前的渲染状态?,c++,directx-10,C++,Directx 10,我有一个程序,可以画文本和一个基本三角形。这两个功能都独立工作。然而,当我把它们排成一行时,我的三角形没有画出来,然后我收到这个错误: D3D10: ERROR: ID3D10Device::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The reason is that the input stage requires Semantic/Inde

我有一个程序,可以画文本和一个基本三角形。这两个功能都独立工作。然而,当我把它们排成一行时,我的三角形没有画出来,然后我收到这个错误:

D3D10: ERROR: ID3D10Device::Draw: Input Assembler - Vertex Shader linkage error: Signatures between stages are incompatible. The reason is that the input stage requires Semantic/Index (POSITION,0) as input, but it is not provided by the output stage. [ EXECUTION ERROR #342: DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND ]
我做了一些研究,它看起来像是由ID3DXFont在渲染时更改状态引起的。Sc4Freak在此线程上:


建议传递D3DX10_SPRITE_SAVE_状态,但我不完全理解spirtes和direct text之间的关系,或者我应该在哪里调用它。有人能解释为什么会这样吗

我知道了。执行此操作的方法是调用:

pSprite->begin(D3DX10_SPRITE_SAVE_STATE);
//your text drawtext method stuff here
pSprite->end();
请注意,您需要初始化精灵对象。您可以使用D3DX10CreateSprite函数实现这一点,该函数与createtext函数非常类似