• 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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
83 invités en ligne
membre en ligne: -
RSS Feed