如何解决如何强制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,但我不完全理解spirit和直接文本之间的关系,或者我应该在哪里调用它。谁能解释为什么会这样?
解决方法
我想通了。您可以通过以下方式进行此操作:
pSprite->begin(D3DX10_SPRITE_SAVE_STATE);
//your text drawtext method stuff here
pSprite->end();
请注意,您需要初始化Sprite对象。您可以使用D3DX10CreateSprite函数执行此操作,该函数与createtext函数非常相似。
http://msdn.microsoft.com/zh-CN/library/bb172670(v=VS.85).aspx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。