使用 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 值。
我正在制作一个小型 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 值。