using System; using Irrlicht; // Erreur de compilation içi? jetez un oeil au commentaire suivant using Irrlicht.video; using Irrlicht.core; using Irrlicht.scene; // Des problèmes avec cette source? // Quelques solutions qui pourraient vous aider : // // - Si votre compilateur dit qu'Irrlicht ne peut pas être trouvé, // ajoutez Irrlicht.NET.dll (in bin\win32-VisualStudio) comme Reference // dans l'explorateur de solutions (solutions browser) // // - Si cela compile, mais mais que votre application rencontre une exception du type : // "An unhandled exception of type 'System.io.FileNotFoundException' occurred in Unknown Module. // Additional information: File or assembly name Irrlicht.NET, or one of its dependencies, // was not found." // Irrlicht.dll est manquant. Copiez le dans le dossier Windows/System32 ou ajoutez-la dans l'explorateur de solutions namespace _01.HelloWorld { /// <summary> /// application exemple d'Irrlicht utilisant .NET /// Un tout petit peu plus compliqué que la version C++ /// </summary> class Example { /// <summary> /// Le point d'entrée ("main") de l'application /// </summary> [STAThread] static void Main(string[] args) { // Initialisation du moteur, création d'un objet "device" IrrlichtDevice device = new IrrlichtDevice(DriverType.OPENGL); // Propriétés de la fenêtre, pas besoin de toucher aux WinForms, Irrlicht gère tout seul cela. device.ResizeAble = true; device.WindowCaption = "Irrlicht.NET C# example 01 - Hello World"; // Chargement des textures en mémoire ITexture texSydney = device.VideoDriver.GetTexture(@"..\..\media\sydney.bmp"); ITexture texWall = device.VideoDriver.GetTexture(@"..\..\media\wall.bmp"); ITexture texLogo = device.VideoDriver.GetTexture(@"..\..\media\irrlichtlogoaligned.jpg"); // Chargement du mesh animé Sydney.md2. // Rq : le "@" devant la chaîne de caractères sert à ne pas doubler les antislashs "\" qui sont interpretés comme des commandes internes (e.g. \n pour les saut de ligne) // et à garder la chaîne tel qu'elle est inscrite. (doc c#) Irrlicht.scene.IAnimatedMesh mesh = device.SceneManager.GetMesh(@"..\..\media\sydney.md2"); // Test si le mesh sydney existe bien, sinon on génere une erreur (utile pour le déboguage) if (mesh == null) { System.Windows.Forms.MessageBox.Show( @"Could not load mesh ..\..\media\sydney.md2, exiting.", "Problem starting program"); return; } // ajout de la camera ICameraSceneNode cam = device.SceneManager.AddCameraSceneNodeFPS(null, 100, 100, -1); cam.Position = new vector3d(20,0,-50); // ajout d'un node ("noeud") cube ISceneNode node = device.SceneManager.AddCubeSceneNode(15,null,-1,new vector3d(30,-15,0)); // assignation de la texture au cube node.SetMaterialTexture(0, texWall); // et sans oublier d'ajouter le mesh animé au node, sinon il ne sera pas consideré dans la scène et ne sera pas rendu à l'écran. node = device.SceneManager.AddAnimatedMeshSceneNode(mesh, null, -1); node.SetMaterialTexture(0, texSydney); node.SetMaterialFlag(MaterialFlag.LIGHTING, false); device.CursorControl.Visible = false; // Début de la boucle principale int fps = 0; while(device.Run()) { if (device.WindowActive) { // Début du rendu device.VideoDriver.BeginScene(true, true, new Color(0,100,100,100)); // rendu de tous les meshs device.SceneManager.DrawAll(); // Logo device.VideoDriver.Draw2DImage( texLogo, new Position2D(10,10), new rect(0,0,88,31), new rect(new Position2D(0,0),device.VideoDriver.ScreenSize), new Color(0xffffff), false); // fin du rendu device.VideoDriver.EndScene(); // ... et un petit affichage des fps (frame per second = images/seconde) "pour le fun" ;) if (fps != device.VideoDriver.FPS) { fps = device.VideoDriver.FPS; device.WindowCaption = "Irrlicht.NET C# example 01 - Hello World ["+ device.VideoDriver.Name + "] fps:" + fps; } } } // fin de la boucle } // fin de la fonction main } // fin de la class } // fin du namespace
Pages: 1