2011-04-14 69 views
0

我有一个绘制文本并绘制​​原始三角形的程序。两个功能都是独立工作然而,当我打电话给他们在一排三角形的我不画,然后我收到此错误:如何强制DirectX恢复之前的渲染状态?

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和直接的文本,或者我应该称它之间的关系。谁能解释为什么会发生这种情况?

回答

0

我想通了。你这样做的方式是通过调用:

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

请注意,您需要初始化精灵对象。您可以使用D3DX10CreateSprite函数来完成此操作,该函数与createtext函数非常相似。

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