Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

bazi

Frischling

  • »bazi« ist der Autor dieses Themas
  • Private Nachricht senden

1

27.11.2010, 09:06

SDL screen "zwischenspeichern" klappt nicht...

Hi, ich möchte einer Funktion den Inhalt meines screens mitgeben, sodass dieser zwischengespeichert wird und bei jedem durchlauf wieder mit angezeigt wird.

Hier Code, der nicht funktioniert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
SDL_Surface *screen_backup = NULL;
SDL_BlitSurface(screen,NULL,screen_backup,NULL);
test(screen, image_intro, screen_backup);

void test(SDL_Surface *screen, SDL_Surface *image, SDL_Surface *screen_backup) {
    SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));   // clear screen
    SDL_BlitSurface(screen_backup, NULL, screen, NULL);
    SDL_BlitSurface(image, NULL, screen, NULL);
    SDL_Flip(screen);
    return;
}


Der screen hat, beim "SDL_BlitSurface(screen,NULL,screen_backup,NULL);" mehr als genug Inhalt und image_intro anzeigen funktioniert auch. Was aber eben nicht funktioniert ist das anzeigen des screens...

Ich hoffe von euch kann mir da jemand helfen...

2

27.11.2010, 09:41

Der obere Kram ist ja nicht mal in einer Funktion ;)
Ausserdem musst du es ja auch erst Erzeugen, z.b. mit SDL_CreateVideoMode :)

bazi

Frischling

  • »bazi« ist der Autor dieses Themas
  • Private Nachricht senden

3

27.11.2010, 09:44

Das is n Ausschnitt, der Code ausserhalb von Test, liegt in der Main und vor dem Code wird mir ja schon eine Ausgabe gemacht, da liegt Text und ein paar Bilder zum Testen.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

27.11.2010, 14:19

Ich hoffe und denke mal, dass du screen mit SDL_SetVideoMode erstellt hast, ja?
In dem Falle musst du deine screen Surface nicht zwischenspeichern, sondern kannst direkt mit der Funktion SDL_GetVideoSurface auf diese zugreifen.

edit: für dein Double Buffer vorhaben, guck dir auch mal den Flag SDL_DOUBLEBUF an, dazu einfach bei SDL_SetVideoMode runter scrollen zu Flags ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige