1.
entweder du machst es so
C++:
SDL_Surface* screen = SDL_SetVideoMode(...);
...
SDL_FillRect(screen, NULL, 0); // mit schwarz füllen
oder
C++:
SDL_FillRect(SDL_GetVideoSurface(), NULL, 0);
das hat den gleichen effekt
2.
Ok ich merk gerade, dass es hier nicht wirklich einen Unterschied macht, aber Referenzen sind oft von Vorteil.
Also ich versuch es mal zu erklären. (ich hoffe es stimmt soweit, wenn nicht bitte verbessern)
Zuerst musst du wissen, was eine Referenz ist. Es ist im Prinzip einfach ein andere Bezeichner für ein und die Selbe Variable.
Also
C++:
int i = 0;
int& i2 = i;
i2 = 1;
dann hat auch i den Wert 1, da i2 nur die Referenz auf i ist.
Mit andren Worten, damit ist es möglich anstelle i auch per i2 auf i zuzugreifen.
Das macht hier noch wenig Sinn.
Bei Klassen macht es schon mehr sinn.
std::string ist eine Klasse.
angenommen du hast die Funktion
C++:
void f(std::string s)
....
Wenn du sie jetzt per
aufrufst, wird der Konstruktor der Klasse string aufgerufen.
Danach wird in der Funktion normal mit s gearbeitet.
Rufst du die Funktion so auf
C++:
std::string s;
s = "hallo";
f(s);
Dann wird wieder der Konstruktor von der string Klasse aufgerufen, obwohl ja bereits ein string Objekt übergeben wird.
Genau hier bieten Referenzen einen Vorteil.
C++:
void f(const std::string& s)
...
denn hier entfällt der Konstruktor aufruf, da s ja bereits vorhanden ist!
Du musst nur beachten, dass du s nicht innerhalb der Funktion verändern kannst. (wegen const)
3. Unter update versteht man nichts andres, als die Berechnungen, die nichts mit der Grafik zu tun haben.
Also draw ist nur das zeichnen an sich (apply_surface)
Update ist dann das abarbeiten der Eingabe, der Events, etc.
Und flippen ist wieder klar