SDL_SetRenderDrawColor 完全支持透明度(Alpha)
一、函数原型
c
int SDL_SetRenderDrawColor(
SDL_Renderer* renderer,
Uint8 r, // 红 0~255
Uint8 g, // 绿 0~255
Uint8 b, // 蓝 0~255
Uint8 a // 透明度 0~255(0=全透,255=不透明)
);
二、关键:必须开启混合模式(否则 Alpha 无效)
默认 Alpha 是不生效的,要先设混合模式:
c
// 1. 开启混合
SDL_SetRenderDrawBlendMode(render, SDL_BLENDMODE_BLEND);
// 2. 设置半透明红色(A=128,50%透明)
SDL_SetRenderDrawColor(render, 255, 0, 0, 128);
// 3. 画矩形(带透明度)
SDL_Rect rect = {100, 100, 200, 200};
SDL_RenderFillRect(render, &rect);
三、常见坑
- 忘了
SDL_SetRenderDrawBlendMode()→ Alpha 无效,永远不透明。 - Alpha 值范围 0~255:0 全透,255 不透明。
SDL_RenderClear()的 Alpha:清屏也受 A 影响,但窗口背景是否透要看系统。