Hi
Ich programmierere zur Zeit eine Sprite-Engine. Die Sprites will ich in einer Liste abspeichern. Man kann im SceneManager die Funktion AddSprite aufrufen, bei der man einen Zeiger auf die Sprite Klasse übergeben muss. Dieser Zeiger wird danach in die Liste eingetragen. Die Funktion DrawAll rendert danach alle Sprites. Durch einen Iterator auf die Liste, kann ich alle Sprite durchgehen und dann kann ich die RenderFunktion der Sprites aufrufen.
Doch leider funktioniert es noch nicht ganz. Wenn ich die Engine teste, dann zeigt der Debugger die Elemente der Liste nicht an. Es steht lediglich error.
Hier ist ein Codeauschnitt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
veResult veSceneManager::AddSprite(veSprite * pSprite)
{
// -------------------------------------------------------------------------
// Das Sprite zur Szene hinzufügen
// -------------------------------------------------------------------------
m_lSprite.push_back(pSprite);
return VE_OK;
}
veResult veSceneManager::DrawAll()
{
// -------------------------------------------------------------------------
// Alle Objekte der Szene rendern
// -------------------------------------------------------------------------
// Alle Sprites rendern
for(m_SpriteIterator = m_lSprite.begin(); m_SpriteIterator != m_lSprite.end(); m_SpriteIterator++)
{
(*m_SpriteIterator)->RenderSprite();
}
return VE_OK;
}
|
Ein Codeausschnitt aus dem EngineTestProject
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
pSprite->CreateSprite("Data//NewPlayer.png");
Scene.AddSprite(pSprite);
while(!bQuit)
{
pCamera->SetPosition(veVector3(0.0f, 0.0f, -5.0f), veVector3(0.0f, 0.0f, 0.0f), veVector3(0.0f, 1.0f, 0.0f));
Scene.RunScene();
}
|
Die RunScene Funktion beinhaltet die DrawAll Funktion.
Ich habe ein weiteres Projekt erzeugt, ebenfalls mit listen, aber nur eine Konsolenanwendung. Dort funktioniert es allerdings einwandfrei.
Kann mir jemand helfen?
LG Patrick