2012-03-15 6 views
1

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

+0

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

+0

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. –

+1

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

Répondre

0

Si vous passez à D3D11, vous pourriez être intéressé par une bibliothèque de rendu de police que je travaille sur le portage à SlimDX (ainsi que quelques autres bits des bibliothèques de boîte à outils DirectX qui ont été libérés au cours des derniers mois).

Il est encore en développement, donc aucune garantie sur quoi que ce soit, mais vous pouvez le trouver ici (SVN): http://code.google.com/p/slimdx/source/browse/#svn%2Fbranches%2Flite%2FSlimDX.Toolkit

+0

Merci pour votre réponse. En attendant, j'ai commencé à développer un moteur par moi-même ... –

+0

Si quelqu'un est intéressé par le résultat: http://sdxspritetext.codeplex.com/ –

Questions connexes