2016-07-26 13 views
0

Ich ging durch this specific Lektion.SDL Zweifel bezüglich Rendering

Die ersten beiden Argumente legen die x-Position und y-Position des Zielrechtecks ​​(Sprite-Clip) fest. Ich habe nicht verstanden warum er (SCREEN_WIDTH - currentClip-> w)/2, wenn er nur SCREEN_WIDTH/2 geschrieben hätte?

Hier ist die Funktion machen:

void LTexture::render(int x, int y, SDL_Rect* clip) 
{ 
    SDL_Rect renderQuad = { x, y, mWidth, mHeight }; 
    if (clip != NULL) 
    { 
     renderQuad.w = clip->w; 
     renderQuad.h = clip->h; 
    } 

    SDL_RenderCopy(gRenderer, mTexture, clip, &renderQuad); 
} 

Antwort

1

Der Lehrer tat, um sicherzustellen, dass Sie das Bild schön auf dem Bildschirm zentriert ist.

Wenn Sie SCREEN_WIDTH/2 verwenden würden, würde das Bild in der Mitte des Bildschirms beginnen und somit nicht vollständig zentriert sein. Daher subtrahiert er die Hälfte der Breite des Bildes, wodurch sichergestellt wird, dass die linke Hälfte des Bildes genau links von der Mitte des Bildschirms gezeichnet wird und die rechte Hälfte genau in der Mitte des Bildschirms gezeichnet wird.

Hier ist einfache Darstellung. Lass es mich wissen, wenn meine Antwort dir geholfen hat!

enter image description here

+0

Verstanden.Thanks! – w4tch0ut

+0

@ w4tch0ut Großartig! Froh, dass ich helfen könnte :) Könnten Sie für meine Antwort stimmen und sie als akzeptiert markieren? Auf diese Weise bekomme ich einige Punkte und das motiviert mich. Viel Glück mit weiteren Spielentwicklern! –