SDL2设置透明度

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 影响,但窗口背景是否透要看系统。
相关推荐
青少儿编程课堂6 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i6 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法
无名猿8 小时前
shared_ptr 完全指南:引用计数、控制块与开销
c++·性能优化·内存管理·标准库·现代c++
xailorliu10 小时前
SLIC_超像素算法
c++·opencv·目标检测·机器学习·计算机视觉
苏打豆10 小时前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
小小龙学IT11 小时前
snap7 开源西门子 S7 通信协议库深度解析
c++·开源
小溪学编程12 小时前
从 C++ 的规范变迁看语言发展
jvm·c++·面试
ShineWinsu13 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
YYYing.14 小时前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式