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 影响,但窗口背景是否透要看系统。
相关推荐
郑同学的笔记11 分钟前
【c++随笔30】C++ 注册回调函数
开发语言·c++
DolitD23 分钟前
国产信创+实时云渲染:数字孪生智慧矿山UE5流畅推流
3d·信息可视化·云计算·图形渲染·数据可视化
lengxuenong33 分钟前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法
十二36 分钟前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯
cu1433 小时前
细谈IT65631的具体功能与其应用
c++·单片机·嵌入式硬件
幻智星科技3 小时前
Karatsuba与CSD优化FPGA大数乘法
c++·fpga开发·密码学
flower9803233 小时前
C++消息总线软件开发框架AI重构版
c++·设计模式·架构
lengxuenong4 小时前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
fanfan_hongyun4 小时前
【UE5.1 创建C++文件】
c++·ue5
余额瞒着我当琳4 小时前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法