Как вы можете заставить DirectX восстановить ваше предыдущее состояние рендеринга? - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть программа, которая рисует текст и рисует примитивный треугольник. Обе функции работают независимо. Однако, когда я вызываю их подряд, мой треугольник не рисуется, и я получаю эту ошибку:

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, но я не совсем понимаю взаимосвязь между духами и прямым текстом, или где я должен его вызывать. Кто-нибудь может объяснить, почему это происходит?

1 Ответ

0 голосов
/ 16 апреля 2011

Я понял это.Это можно сделать, вызвав:

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

...