Je suis en train de créer un éditeur de cartes pour un jeu 2D basé sur des tuiles. Je voudrais héberger deux contrôles XNA à l'intérieur du Windows Form - le premier à rendre la carte; la seconde pour rendre le tileset. J'ai utilisé le code here pour rendre l'hôte de contrôle XNA dans le Windows Form. Tout cela fonctionne très bien - tant qu'il n'y a qu'un seul contrôle XNA dans le Windows Form. Mais j'ai besoin de deux - un pour la carte; la seconde pour le tileset. Comment puis-je exécuter deux contrôles XNA dans le Windows Form? Alors que googling, je suis tombé sur les termes «swap chain» et «multiple viewports», mais je ne peux pas les comprendre et j'apprécierais le soutien. Juste à côté, je sais que l'exemple de contrôle XNA a été conçu de telle sorte que même si vous avez exécuté 100 contrôles XNA, ils partageraient tous le même GraphicsDevice - essentiellement, les 100 contrôles XNA partageraient le même écran. J'ai essayé de modifier le code pour instancier un nouveau GraphicsDevice pour chaque contrôle XNA, mais le reste du code ne fonctionne pas. Le code est un peu long à poster, donc je ne le posterai pas à moins que quelqu'un en ait besoin pour pouvoir m'aider.[C#] [XNA 3.1] Comment puis-je héberger deux fenêtres XNA différentes dans un Windows Form?
Merci d'avance.
Le lien référencé en question ** ** ne montrer comment faire ce que OP dit qu'il veut faire. ([Périphérique graphique WinForms Series 1] (http://xbox.create.msdn.com/en-US/education/catalog/sample/winforms_series_1).) Le code essentiel est dans GraphicsDeviceControl.OnCreateControl: 'graphicsDeviceService = GraphicsDeviceService.AddRef (Handle, ClientSize.Width, ClientSize.Height); Après cela, 'graphicsDeviceService.GraphicsDevice' est le GraphicsDevice qui s'insère dans ce contrôle. Créez deux d'entre eux, et vous avez deux contrôles à dessiner - comme le montre l'exemple de code. – ToolmakerSteve
... Si vous ne voulez pas utiliser cet exemple tel quel, tout ce dont vous avez besoin est une référence à chaque contrôle; mettez 'myControl.Handle' dans la ligne ci-dessus pour créer un' GraphicsDeviceService' dont 'GraphicsDevice' dessine dans' myControl'. (Si vous utilisez ContentManager, vous aurez également besoin de la ligne suivante, 'services.AddService (graphicsDeviceService);'). –
ToolmakerSteve