使用C语言的SDL 2.0,如何使矩形淡入淡出?

时间:2018-01-11 05:20:21

标签: c sdl

我正在制作一个小型2D游戏,我正在尝试制作一个从透明(白色)到原始颜色的矩形渐变,然后再回到白色,然后继续从白色脉冲到它的颜色和背面。例如:

白色 - >淡出红色 - >红色 - >淡出白色 - >重复...

我用矩形制作了矩形:

SDL_Rect rect;

然后我设置颜色并将矩形绘制到屏幕上(在设置它的x和y位置和大小之后):

SDL_SetRenderDrawColor(renderer, 255, 51, 0, 255);
SDL_RenderFillRect(renderer, &rect);

但我不知道最后一个参数是什么(alpha)。在wiki中,SetRenderDrawColor的文档是:

int SDL_SetRenderDrawColor(SDL_Renderer* renderer,
                       Uint8         r,
                       Uint8         g,
                       Uint8         b,
                       Uint8         a)

其中'a'是alpha值(而r,g,b是红色,绿色,蓝色)。这是什么让我改变颜色的不透明度?如果我有一个循环和每个帧我只有一个变量在0到255之间变化,并使“alpha”值允许我改变透明度并使矩形颜色“脉冲”?我怎么能这样做?

我必须让我的矩形纹理?有没有办法让我改变alpha值来启用此功能?

编辑:我意识到我在循环中没有使用RenderClear!这解决了问题。

1 个答案:

答案 0 :(得分:1)

您需要调整Alpha值。 Alpha代表透明度。最大值意味着它是不透明的(根本不透明),最小值为零意味着它是完全透明的(根本不可见)。在这种情况下,255表示它不透明。如果你把它设置为128,那么它将是50%透明的。要淡入淡出,请调整Alpha值。