Je configure le tampon stencil de sorte que seules certaines parties de l'écran sont affectées par les appels draw. Plus précisément, je veux attirer dans une petite zone. Il deviendra une interface utilisateur, donc tout dessin sera une sorte de sprite 2D. L'utilisation de l'objet sprite fonctionne très bien. Les sprites qui sont en dehors de la zone sont coupés. Cependant, quand j'ajoute du texte, tout est dessiné après et le texte lui-même n'est pas coupé. PIX montre qu'un nouveau DepthStencilState est défini avec le tampon stencil désactivé dès que le texte draw est appelé. Le texte est dessiné par le même objet sprite qui est responsable de dessiner d'autres sprites.Dessiner du texte avec un tampon stencil
Le dessin est effectué via la méthode SlimDX.Direct3D10.Font.Draw.
Existe-t-il un moyen de forcer DirectX à ne pas modifier l'objet d'état? J'utilise SlimDX, mais selon son code, il ne semble pas être responsable du changement d'état.
Nico
Vraisemblablement comme il est DirectX10 que vous utilisez un shader pour dessiner, et si elle utilise le cadre des effets I Je crois que vous pouvez définir des états de profondeur de crayon dans l'effet. Peut-être que l'effet que vous utilisez est ce qui définit cela, et vous devriez regarder dans le fichier d'effet pas le code du programme? – jcoder
Eh bien, cela pourrait être possible. Cependant, j'utilise la classe Font directement. Donc je n'ai pas accès au fichier d'effets. Mais le dessin est effectué à travers l'objet Sprite et je suppose, la classe Font utilise les mêmes méthodes que pour dessiner des sprites simples. Je doute donc que ce soit un problème dans le shader lui-même. –
http://www.gamedev.net/topic/573166-dx10-id3dx10sprite-and-sampler-states/ traite de ce genre de ... et malheureusement, semble conclure que sans certains hacks terribles, vous ne pouvez pas l'éviter en fixant le états à ce qu'il veut – jcoder