在SDL_SetRenderDrawColor中更改alpha值并不会产生任何影响。 SDL2

时间:2015-08-02 10:08:55

标签: sdl-2

此代码只显示一个带颜色的简单窗口:

#include<SDL.h>                     
SDL_Window* g_pWindow = 0;
SDL_Renderer* g_pRenderer = 0;
int main(int argc, char* args[])
{
    if (SDL_Init(SDL_INIT_EVERYTHING) >= 0)
    {
        g_pWindow = SDL_CreateWindow("Chapter 1: Setting up SDL",
            SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
            640, 480,
            SDL_WINDOW_SHOWN);
        if (g_pWindow != 0)
        {
            g_pRenderer = SDL_CreateRenderer(g_pWindow, -1, 0);
        }
    }
    else
    {
        return 1; // sdl could not initialize
    }
    SDL_SetRenderDrawColor(g_pRenderer, 80, 80, 253, 0);
    // clear the window to black
    SDL_RenderClear(g_pRenderer);
    // show the window
    SDL_RenderPresent(g_pRenderer);
    // set a delay before quitting
    SDL_Delay(2000);
    // clean up SDL
    SDL_Quit();
    return 0;
}

我正在测试,看看当我更改SDL_SetRenderDrawColor(g_pRenderer, 80, 80, 253, 0)中的alpha因素时会发生什么。当我将alpha值从0更改为255时,它不会影响任何效果。

这里的问题是什么?

1 个答案:

答案 0 :(得分:3)

首先,您尚未启用混合(例如SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);)。

但无论如何,clear操作使用混合是没有意义的,我打赌SDL_RenderClear会忽略它。

如果您想要全屏混合,则应使用SDL_RenderFillRect绘制全屏矩形。