2011-04-14 72 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