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 影响,但窗口背景是否透要看系统。
相关推荐
小杰3121 小时前
网络框架源码阅读技巧
服务器·网络·c++·reactor·zlmediakit·zltoolkit
叼烟扛炮1 小时前
C++ 知识点12 构造函数
开发语言·c++·算法·构造函数
满天星83035771 小时前
定长内存池ObjectPool
数据结构·c++·算法·链表
叼烟扛炮2 小时前
C++第八讲:string 类
开发语言·c++·算法·string
MOONICK2 小时前
bit7z压缩与解压
c++
努力努力再努力wz2 小时前
【Qt入门系列】第一个 Qt Widgets 程序:项目创建、UI 文件、Hello World、对象树与 qDebug 日志
java·c语言·开发语言·数据结构·c++·qt·ui
Hua-Jay2 小时前
OpenCV联合C++/Qt 学习笔记(十五)----形态学操作及应用
c++·笔记·qt·opencv·学习·计算机视觉
程序员老舅2 小时前
深入底层:Linux MMU 工作原理全解
linux·服务器·网络·c++·linux内核·内存管理·linux内存
凤凰院凶涛QAQ2 小时前
《C++转Java快速入手系列》抽象类和接口篇
java·开发语言·c++