2016-07-26 70 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太好了!很高兴我可以帮助:)你可以投我的答案并将其标记为已接受?通过这种方式,我可以获得一些积分,并保持我的动力。祝你有更好的游戏开发! –