SDL对渲染有疑问

时间:2016-07-26 14:22:44

标签: c++ sdl

我正在经历this specific课程。

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

前两个参数设置目标矩形(精灵片段)的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 个答案:

答案 0 :(得分:1)

老师这样做是为了确保你的图像很好地集中在屏幕上。

如果您使用SCREEN_WIDTH / 2,图像将从屏幕中间开始,因此不会完全居中。因此,他减去图像宽度的一半,这将确保图像的左半部分被绘制在屏幕中间的左侧,而右半部分则被绘制在屏幕中间的右侧。 / p>

这是一个简单的例子。如果我的回答对您有帮助,请告诉我!

enter image description here