C++ 如何在SDL2中的不透明矩形上绘制透明或半透明矩形?

C++ 如何在SDL2中的不透明矩形上绘制透明或半透明矩形?,c++,sdl,render,sdl-2,rect,C++,Sdl,Render,Sdl 2,Rect,下面是我绘制SDL_Rect对象Rect和rect2的代码: #include <iostream> #include <SDL2/SDL.h> int main(){ SDL_Window *window= SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); if(window == 0)

下面是我绘制
SDL_Rect
对象
Rect
rect2
的代码:

#include <iostream>
#include <SDL2/SDL.h>

int main(){
    SDL_Window *window=     SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    if(window == 0)
        std::cout << SDL_GetError() << std::endl;

    SDL_Renderer *renderer= SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if(renderer == NULL)
        std::cout << SDL_GetError() << std::endl;

    SDL_Rect rect;
    rect.x=     100;
    rect.y=     100;
    rect.w=     100;
    rect.h=     100;

    SDL_Rect rect2;
    rect2.x=    150;
    rect2.y=    150;
    rect2.w=    100;
    rect2.h=    100;

    while(true){
        Uint8 r,g,b,a;

        r=  32;
        g=  32;
        b=  32;
        a=  255;
        if(SDL_SetRenderDrawColor(renderer, r, g, b, a) == -1)
            std::cout << SDL_GetError() << std::endl;
        if(SDL_RenderClear(renderer) == -1)
            std::cout << SDL_GetError() << std::endl;

        r=  255;
        g=  255;
        b=  255;
        a=  255;
        if(SDL_SetRenderDrawColor(renderer, r, g, b, a) == -1)
            std::cout << SDL_GetError() << std::endl;
        if(SDL_RenderFillRect(renderer, &rect) == -1)
            std::cout << SDL_GetError() << std::endl;

        r=  100;
        g=  100;
        b=  100;
        a=  0;
        if(SDL_SetRenderDrawColor(renderer, r, g, b, a) == -1)
            std::cout << SDL_GetError() << std::endl;
        if(SDL_RenderFillRect(renderer, &rect2) == -1)
            std::cout << SDL_GetError() << std::endl;

        SDL_RenderPresent(renderer);
    }

    return 0;
}
#包括
#包括
int main(){
SDL_Window*Window=SDL_CreateWindow(“测试”,SDL_WINDOWPOS_居中,SDL_WINDOWPOS_居中,640480,SDL_Window_显示);
如果(窗口==0)

std::cout您只需打电话
SDL\u SetRenderDrawBlendMode(渲染器,SDL\u BLENDMODE\u混合);

在创建渲染器以启用与RenderDraw函数的alpha混合后。(

可能重复的