J'ai donc trois classes Application, DrawMgr et Cube. Dans Application.cpp est ma boucle principale dans laquelle j'appelle DrawMgr :: DrawCube dans lequel j'appelle Cube :: Draw.Dessin SDL_Surface d'une autre classe
Application.cpp
while (!quit)
{
//Draw Background
gDrawMgr.DrawBackground();
gDrawMgr.DrawCube();
//UpdateScreen
gDrawMgr.UpdateScreen();
//Handle events on queue
while (SDL_PollEvent(&e) != 0)
{
//User requests quit
if (e.type == SDL_QUIT || e.key.keysym.sym == SDLK_ESCAPE)
{
quit = true;
}
}
}
DrawMgr.cpp
SDL_Surface* screenSurface;
void DrawMgr::DrawCube()
{
gCube.Draw(screenSurface);
}
Cube.cpp
void Cube::Draw(SDL_Surface* destination)
{
SDL_Rect offset;
offset.x = 100;
offset.y = 100;
SDL_FillRect(cube, NULL, SDL_MapRGB(cube->format, 0, 0, 0));
SDL_BlitSurface(cube, NULL, destination, &offset);
}
Quand je lance le programme, le cube ne semble pas, que suis-je mal faire?
Donc, vous dites que cela fonctionne aussi longtemps que vous ne divisez pas votre code dans trois catégories distinctes? – Martin
Oui, c'est le cas. Je devrais probablement mentionner que gCube et gDrawMgr sont des objets que j'utilise globalement avec extern. –
Où écrivez-vous réellement à l'écran, 'Cube :: Draw' dessine sur la surface' screenSurface'. 'SDL_Flip' est alors nécessaire pour dessiner dans le tampon d'affichage. –