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

With SDL 2.0 in C, how do I make a rectangle fade in and out?

我正在制作一个小型 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" 值允许我改变透明度并使矩形颜色 "pulse"?我该怎么做?

我必须让我的矩形成为纹理吗?有没有办法为我打开此功能以更改 alpha 值?

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

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