2016-07-26 9 views
0

Я прошел через this specific урок.SDL сомнения относительно рендеринга

gSpriteSheetTexture.render 
    ( 
    (SCREEN_WIDTH - currentClip->w)/2, 
    (SCREEN_HEIGHT - currentClip->h)/2, 
    currentClip 
    ); 

первые 2 аргумента задают положение x и позицию y прямоугольника назначения (спрайт-клип). Я не понимал, почему он это сделал (SCREEN_WIDTH - currentClip-> w)/2, когда он только что написал SCREEN_WIDTH/2?

Вот функция визуализации:

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); 
} 

ответ

1

Учитель сделал это, чтобы убедиться, что вы образ красиво по центру экрана.

Если вы используете SCREEN_WIDTH/2, изображение начнется посередине экрана и, следовательно, не будет полностью центрировано. Поэтому он вычитает половину ширины изображения, что гарантирует, что левая половина изображения будет нарисована слева от середины экрана, а правая половина будет направлена ​​прямо от середины экрана.

Вот простую иллюстрацию. Дай мне знать, помог ли мой ответ!

enter image description here

+0

Понял. Спасибо! – w4tch0ut

+0

@ w4tch0ut Отлично! Рад, что я мог бы помочь :) Могли бы вы проголосовать за мой ответ и отметить его как принятый? Таким образом, я получаю некоторые моменты, и это держит меня мотивированным. Удачи вам в дальнейшей игре! –

Смежные вопросы