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

时间:2011-04-14 17:48:57

标签: 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/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在这个帖子上:

http://www.gamedev.net/topic/487280-dx10-render-question/

建议传递D3DX10_SPRITE_SAVE_STATE,但我并不完全理解spirtes和直接文本之间的关系,或者我应该调用它的位置。谁能解释为什么会这样?

1 个答案:

答案 0 :(得分:0)

我想出来了。你这样做的方法是调用:

pSprite->begin(D3DX10_SPRITE_SAVE_STATE);
//your text drawtext method stuff here
pSprite->end();

请注意,您需要初始化sprite对象。您可以使用D3DX10CreateSprite函数执行此操作,该函数与createtext函数非常相似。

http://msdn.microsoft.com/en-us/library/bb172670(v=VS.85).aspx