2016-11-12 2 views

Répondre

1

Il est impossible de déterminer exactement quels paramètres ont été adoptés et qui surcharge Begin() a été appelé; mais il est possible de recréer l'état original créé par cet appel.

Les paramètres à Begin(), tels que BlendState, DepthStencilState, etc., sont effectivement mis sur le GraphicsDevice. Par conséquent, il est possible de lire (et enregistrer) les informations d'état de SpriteBatch.GraphicsDevice, et de le recréer lors du prochain appel à Begin()

+0

Cool, c'est ce que je soupçonnais. Est-il possible de voir la source de la classe GraphicsDevice? – GameKyuubi

+0

@GameKyuubi, XNA est gros provient, mais il est monogame, qui est un open-source, le port multi-plateforme de XNA. Vous n'avez pas besoin de la source strictement pour répliquer l'état, car GraphicsDevice expose les propriétés publiques qui contiennent toutes les informations dont vous avez besoin (voir le lien documentation dans ma réponse) – CoolBots

+0

Oui, j'analysais la classe SpriteBatch et utilisait GraphicsDevice dans un manière que je veux étudier, en particulier en ce qui concerne GraphicsDevice.SetRenderTarget(). J'essaie de comprendre les limites et l'ordre des appels que je devrais utiliser lors de la manipulation de plusieurs SpriteBatches et plusieurs RenderTargets, plus précisément ce que la propriété SetRenderTarget établit que SpriteBatch regarde lorsque Begin() est appelée, car apparemment, je ne peux pas passer un SpriteBatch RenderTarget pendant que le SpriteBatch est actif. – GameKyuubi