Message #579
Sujet: Irrlicht.GUI: comment l'initialiser?
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 13-11-2006 04:03:15 | Esselfe |
Salut
Je sais que les membres d'Irrlicht sont intialisablent soit par "IrrlichtDevice device = new IrrlichtDevice(DriverType.OPENGL);" soit par "ICameraSceneNode cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1);" Mais je ne sais pas comment et quoi exactement initialiser pour integrer le GUI... Voilà mon code compilé sous MSVisual C# 2005 Express: using System; using System.Windows.Forms; // pour MessageBox.Show() using Irrlicht; using Irrlicht.Video; using Irrlicht.Scene; using Irrlicht.GUI; using Irrlicht.Core; class Esselfe3{ class playGUI{ // ces membres sont public car des méthodes propres à Irrlicht y accèdent... (parex. IrrlichtDevice.CloseDevice()) public IrrlichtDevice device; public IGUIEnvironment GUIenv; public irr.gui.IGUIEnvironment; // je crois je n'ai pas à m'en servir... mais c'est ce que je donne au constructeur? public IGUIElement GUIelem; public ICameraSceneNode cam; public ISceneNode cube; public ITexture texCube; public float cubeSize; public Vector3D camPos, camLookat, cubePos; public bool inMenu; // constructeur public playGUI(){ cubeSize = 10.0f; camPos.X = 0.0f; camPos.Y = 0.0f; camPos.Z = -20.0f; camLookat.X = 0.0f; camLookat.Y = 0.0f; camLookat.Z = 0.0f; cubePos.X = 0.0f; cubePos.Y = 0.0f; cubePos.Z = 0.0f; inMenu = new bool(); } public int initmee(){ // j'ai l'intention de basculer entre cette scene et le GUI avec des touches du clavier... // init device device = new IrrlichtDevice(DriverType.OPENGL); device.ResizeAble = true; device.WindowCaption = "Irrlicht GUI"; // device.VideoDriver.SetAmbientLight(new Colorf(0.0f,0.5f,0.0f)); // init cam cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1); // init cube cube = device.SceneManager.AddCubeSceneNode(15.0f, null, 1, new Vector3D(0.0f,0.0f,0.0f)); texCube = device.VideoDriver.GetTexture(@"C:\\irrlicht-1.1\\media\\wall.bmp"); if (texCube == null){ MessageBox.Show(@"Erreur: C:\\irrlicht-1.1\\media\\wall.bmp", "Erreur lors du chargement de texture"); return -1; } cube.SetMaterialTexture(0, texCube); cube.SetMaterialFlag(MaterialFlag.LIGHTING, false); GUIenv = device.GUIEnvironment; GUIenv = IGUIEnvironment.AddWindow(/*...*/); // boucle principale while (device.Run()){ if (device.WindowActive){ device.VideoDriver.BeginScene(true, true, new Color(0, 50,50,50)); // device.SceneManager.DrawAll(); GUIenv.DrawAll(); device.VideoDriver.EndScene(); } } // ces 2 méthodes générent une exception; "AccessViolationException" (??) // device.VideoDriver.RemoveTexture(texCube); // device.CloseDevice(); return 0; } } public static int Main(){ playGUI pg = new playGUI(); pg.initmee(); return 0; } } Juste avant de refaire ce code, j'avais cetteligne de code où mes membres sont présentement: "IGUIEnvironment GUIenv;" "IGUIElement GUIelem;" Comment le membre 'IrrlichtDevice.GUIEnvironment' (qui n'est qu'en mode get;) se trouve à être affecté à ma variable GUIenv? Dois-je utiliser la méthode Irrlicht.GUI.IGUIEnvironment.AddWindow() pour faire aparaître le menu ou est-ce bien la ligne: "GUIenv.DrawAll();" qu'il me faut insérer dans la loop principale? ... Il n'y a pas de tuto pour le GUI d'Irrlicht selon mes recherches... |
| Création du message | 13-11-2006 03:17:28 | Esselfe |
Salut
Je sais que les membres d'Irrlicht sont intialisablent soit par "IrrlichtDevice device = new IrrlichtDevice(DriverType.OPENGL);" soit par "ICameraSceneNode cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1);" Mais je ne sais pas comment et quoi exactement initialiser pour integrer le GUI... Voilà mon code compilé sous MSVisual C# 2005 Express: using System; using System.Windows.Forms; // pour MessageBox.Show() using Irrlicht; using Irrlicht.Video; using Irrlicht.Scene; using Irrlicht.GUI; using Irrlicht.Core; class Esselfe3{ class playGUI{ // ces membres sont public car des méthodes propres à Irrlicht y accèdent... (parex. IrrlichtDevice.CloseDevice()) public IrrlichtDevice device; public IGUIEnvironment GUIenv; public irr.gui.IGUIEnvironment; // je crois je n'ai pas à m'en servir... mais c'est ce que je donne au constructeur? public IGUIElement GUIelem; public ICameraSceneNode cam; public ISceneNode cube; public ITexture texCube; public float cubeSize; public Vector3D camPos, camLookat, cubePos; public bool inMenu; // constructeur public playGUI(){ cubeSize = 10.0f; camPos.X = 0.0f; camPos.Y = 0.0f; camPos.Z = -20.0f; camLookat.X = 0.0f; camLookat.Y = 0.0f; camLookat.Z = 0.0f; cubePos.X = 0.0f; cubePos.Y = 0.0f; cubePos.Z = 0.0f; inMenu = new bool(); } public int initmee(){ // j'ai l'intention de basculer entre cette scene et le GUI avec des touches du clavier... // init device device = new IrrlichtDevice(DriverType.OPENGL); device.ResizeAble = true; device.WindowCaption = "Irrlicht GUI"; // device.VideoDriver.SetAmbientLight(new Colorf(0.0f,0.5f,0.0f)); // init cam cam = device.SceneManager.AddCameraSceneNode(null, camPos, camLookat, 1); // init cube cube = device.SceneManager.AddCubeSceneNode(15.0f, null, 1, new Vector3D(0.0f,0.0f,0.0f)); texCube = device.VideoDriver.GetTexture(@"C:\\irrlicht-1.1\\media\\wall.bmp"); if (texCube == null){ MessageBox.Show(@"Erreur: C:\\irrlicht-1.1\\media\\wall.bmp", "Erreur lors du chargement de texture"); return -1; } cube.SetMaterialTexture(0, texCube); cube.SetMaterialFlag(MaterialFlag.LIGHTING, false); GUIenv = device.GUIEnvironment; GUIenv = IGUIEnvironment.AddWindow(/*...*/); // boucle principale while (device.Run()){ if (device.WindowActive){ device.VideoDriver.BeginScene(true, true, new Color(0, 50,50,50)); // device.SceneManager.DrawAll(); GUIenv.DrawAll(); device.VideoDriver.EndScene(); } } // ces 2 méthodes générent une exception; "AccessViolationException" (??) // device.VideoDriver.RemoveTexture(texCube); // device.CloseDevice(); return 0; } } public static int Main(){ playGUI pg = new playGUI(); pg.initmee(); return 0; } } Juste avant de refaire ce code, j'avais cetteligne de code où mes membres sont présentement: "IGUIEnvironment GUIenv;" "IGUIElement GUIelem;" Comment le membre 'IrrlichtDevice.GUIEnvironment' (qui n'est qu'en mode get;) se trouve à être affecté à ma variable GUIenv? Dois-je utiliser la méthode Irrlicht.GUI.IGUIEnvironment.AddWindow() pour faire aparaître le menu ou est-ce bien la ligne: "GUIenv.DrawAll();" qu'il me faut insérer dans la loop principale? ... Il n'y a pas de tuto pour le GUI d'Irrlicht selon mes recherches... |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 148 invités en ligne membre en ligne: - RSS Feed |