Also habe ich drei Klassen Application, DrawMgr und Cube. In Application.cpp ist meine Hauptschleife, in der ich DrawMgr :: DrawCube rufe, in der ich Cube :: Draw rufe.Zeichnen von SDL_Surface aus einer anderen Klasse
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);
}
Wenn ich das Programm ausführen, wird der Würfel nicht erscheinen, was bin ich falsch machen?
So sagen Sie dies so lange funktioniert, wie Sie teilen sich nicht Ihren Code in drei verschiedenen Klassen? – Martin
Ja, tut es. Ich sollte wohl erwähnen, dass gCube und gDrawMgr Objekte sind, die ich global mit extern verwende. –
Wo schreibt man eigentlich auf den Bildschirm, 'Cube :: Draw' zeichnet auf die Oberfläche' screenSurface'. 'SDL_Flip' ist dann erforderlich, um in den Anzeigepuffer zu zeichnen. –