• Tutoriels
  •  » 1003
  •  » [C#] "Hello World" commenté en français

[C#] "Hello World" commenté en français

Proposé par izguit

le 26 September 2006 à 15h 51mn 23s

5447 visualisations


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

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
159 invités en ligne
membre en ligne: -
RSS Feed