Aktuelle Zeit: 05.01.2025, 08:06

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit ISceneManager::getMesh
BeitragVerfasst: 17.05.2010, 18:46 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Hi,
zuerst ein Paar hintergrund Infos:
Ich benutze Windows 7 Und Microsoft Visual C++ 2008 Express.
Ich will ein Kartenspiel Schreiben, sowas wie Magic, falls das einigen was sagt.

Ich habe mir das Ganze Konzept für das Programm im Vorraus überlegt, damit ich es im nachhinein Zerlegen, erweitern, und weiterverwenden kann, wie es mir passt. Das ergebnis davon war, dass ich ziemlich viele verschiedene Klassen verwende.
Eine dieser Klassen hat nun den Folgenden Konstruktor:
Code:
CDuelManager::CDuelManager(IrrlichtDevice *Device)
{
   Smgr = Device->getSceneManager();
   Level = Smgr->getMesh("Media\\Meshes\\stadium.3ds");
   Level->setMaterialFlag(video::EMF_LIGHTING, false);

   Smgr->addOctreeSceneNode(Level);
   Smgr->addCameraSceneNodeFPS();
}


Der Wird nicht so bleiben, sondern ich wollte nur mal, wenn ich auf nen Button Klicke auch was sehen.
Das Problem hierbei ist nur, dass das Programm jedesmal ne "Accesviolation" feststellt, wenn es bei der 2ten Zeile ankommt, und dementsprechend abbricht.
Und ich habe wirklich keine Idee, woran das liegen könnte.

EDIT: Mit 2te Zeile meine ich diese hier:
Code:
Level = Smgr->getMesh("Media\\Meshes\\stadium.3ds");


Habt ihr vielleicht ne Idee?


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 07:45 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi,

also als erstes Fallen mir die doppelten Backslash ins Auge, warum machst du die?

Dann solltest du überprüfen, ob Smgr vielleicht 0 ist, daher könnte der Fehler kommen.

MfG
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 08:47 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Der backslash ist das standart zeichen unter Windows um die Pfade zu trennen, nen normaler Pfad wäre C:\Programme\CodeBlocks\MinGW
Kann man aber so nicht schreiben, da der Backslash nen Syntaxzeichen ist, und aus "\\" wird dann letzten endes \
Normalerweise nutze ich / um Pfade zu trennen, aber das hat mal zu nem Fehler geführt, deswegen habe ich das mal so getestet.

Das Device und der Smgr sind übrigens beide gültig (laut debugger).


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 09:11 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Was sind Smgr und Level für Typen?

MfG
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 09:36 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Code:
class CDuelManager: public irr::IEventReceiver
{
public:
   CDuelManager(irr::IrrlichtDevice*);
   ~CDuelManager(void);

private:   
   irr::scene::ISceneManager *Smgr;
   irr::scene::IAnimatedMesh *Level;

protected:
   virtual bool OnEvent(const irr::SEvent &event);

};


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 11:00 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
hm alles richtig...

Also der Debugger zeigt auch schonma Mist an, das ist im Moment das einzige woran es liegen könnte, dass Device nicht richtig übergeben wird oder das ein "kaputter" Device Pointer übergeben wird...

MfG
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 11:54 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Wie soll ich das überprüfen?
Unmittelbar bevor der Konstruktor aufgerufen wird, funktioniert das Device noch, da nutze ich es um GUIs anzuzeigen, das Funktioniert.
Ich lade mal das ganze Projekt hoch, ist noch sehr überschaubar, vielleicht liegt der Fehler ja außerhalb.

http://rapidshare.com/files/388708404/M ... r.rar.html

Achja, gibt es hier keine Anhänge?


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 12:00 
Offline

Registriert: 18.05.2010, 11:52
Beiträge: 1
Wie sieht denn deine CreateDevice Funktion aus?

bzw. die Übergabe des Device an den Konstruktor?

Gruß
Aleks


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 12:08 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Hier wird mein Deviece erstellt:
Code:
bool Game::initIrrlicht()
{
   Device = createDevice(Options.VideoDriver, core::dimension2d<u32>(Options.Resolution_w, Options.Resolution_h), 32, Options.Fullscreen);
   
   if(Device)
   {
      VDriver = Device->getVideoDriver();
      Smgr = Device->getSceneManager();
      GuiEnv = Device->getGUIEnvironment();
      return true;
   }
   else
      return false;
}


Und hier wird es übergeben:
Code:
void Game::startTestMode()
{
   CStaticDeck Deck;
   CDuelManager M(Device);
   
   while(VDriver && Device->run())
   {
      VDriver->beginScene();
      Smgr->drawAll();
      VDriver->endScene();
   }
}


Nach oben
 Profil  
 
BeitragVerfasst: 18.05.2010, 20:43 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi,

ich hab mir das Projekt runtergeladen, aber konnte den Fehler nicht genau ermitteln.

Ich tippe mal auf einen nicht initialisierten Pointer (sollten alle auf 0 gesetzt werden).

Schaue mir das morgen nochma an...

MfG
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
BeitragVerfasst: 19.05.2010, 15:42 
Offline

Registriert: 17.05.2010, 18:16
Beiträge: 6
Hastes mal Compiliert und geschaut, ob das Problem auch bei dir auftritt?
Und wo hast du eigentlich nicht intialisierte Zeiger gefunden?


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de