Historique des modifications - Message

Message #579

Sujet: Irrlicht.GUI: comment l'initialiser?


Type Date Auteur Contenu
Dernière modification 13-11-2006 04:03:15 Esselfe
Salut smile

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 smile

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

Retour

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
148 invités en ligne
membre en ligne: -
RSS Feed