J'essaie de dessiner sur l'écran pixel-by-pixel à l'aide de XNA, mais j'ai des problèmes de ressources. Je pensais que le meilleur moyen serait d'avoir 1 texture qui met à jour chaque image, mais j'ai du mal à la mettre à jour. Voici ce que j'ai jusqu'à présent, tout comme un test: lorsque le dessin () est appelé la deuxième fois, je reçois l'erreur suivante: p> "Le L'opération a été abandonnée. Vous ne pouvez pas modifier une ressource définie sur un périphérique ou après avoir été utilisée dans un support de carrelage. " P> Si j'essaie de faire une nouvelle texture2D à Draw (), Je reçois rapidement une erreur de mémoire de mémoire. Ceci est pour Windows Phone. Il semble que j'essaie de le faire dans le mauvais sens, quelles autres options dois-je faire fonctionner? P> p>
3 Réponses :
Essayez le réglage Edit: Ceci est le code que j'ai testé dans l'émulateur: p> graphiquesDevice.textures [0] = null code> avant d'appeler setData. En fonction de l'effet que vous trouverez peut-être une méthode plus performante, vous pouvez également envisager Silverlights WriteOeticBitmap.
Merci beaucoup, je l'ai eu pour travailler de votre exemple. Je pense que la première fois que je l'ai essayée, j'ai peut-être pu me procurer une texture2D dans le tirage ().
Vous devez essentiellement faire comme indiqué à l'exception:
Pour vous assurer que la texture n'est pas définie sur le périphérique graphique, mettez ceci à la fin de Draw code>: P>
GraphicsDevice.Textures[0] = null;
L'appel Spritbatch.Draw () s'attend à ce que le tampon graphiqueDevice contienne toutes les données de texture (par extension du tampon GPU), les modifications qui se produisent toujours (à partir de la mise à jour et de l'ISRUNNINGSLOWLY == True) à ce stade entraînera une déchirure lorsque rendu. p>
La solution de contournement de Réutilisez un objet Texure2D déclaré au niveau de la classe. P> Draw () code> **. ** P>
graphiquesDevice.textures [0] = null; code> bloque l'appel de dessin et le jeu jusqu'à ce que le transfert sur le GPU soit terminé, ralentit ainsi la boucle de jeu entière. P>
Je ne connaissais pas la réponse alors j'ai googlé "Texture procédurale XNA" (qui est ce que ce genre de chose est appelé). Il ne semble pas y avoir de manière simple et intégrée de faire cela. Il y a au moins trois suggestions communes (tampon, commandes de texture GPU, le faire dans un shader). Le dernier est évidemment optimal, mais nécessite des connaissances de programmation de shader. Vous voudrez peut-être effectuer la même recherche et parcourir ce qui est là-bas.
Pour que les personnes cherchent à dessiner sur les textures 2D de la mouche pixel-by-pixel, il a été répondu ici Stackoverflow.com/Questions/70022699/...