Próbuję napisać prostą grę 2D wykorzystując SDL 2.0. Jako pomysł wybrałem szachy. Natknąłem się na problem gdy próbowałem podświetlić pola na które może ruszyć się figura. Najpierw próbowałem:
SDL_Rect rect = {190, 40, 52, 52};//prostokąt opisujący pierwsze pole na szachownicy
SDL_FillRect( screenSurface, &rect, SDL_MapRGBA(screenSurface->format, 255, 114, 114, 127));
Potem spróbowałem:
SDL_Rect rect = {190, 90, 52, 52};
SDL_Surface* highlight = SDL_CreateRGBSurface(0, 52, 52, 32, 0, 0, 0, 0);
SDL_FillRect( highlight, NULL, SDL_MapRGBA( highlight->format, 255, 114, 114, 127));
SDL_BlitSurface(highlight, NULL, screenSurface, &rect);
Na końcu stworzyłem obrazek png w odpowiednim kolorze, z przezroczystością i wyświetliłem go nad szachownicą:
SDL_Rect rect = {190, 90, 52, 52};
SDL_Surface = IMG_Load("highlight.png");
SDL_BlitSurface(highlight, NULL, screenSurface, &rect);
Za każdym razem we wskazanym miejscu pojawiał się kwadrat o wskazanym kolorze, ale bez przezroczystości.
EDIT: Zgodnie z sugestią użytkownika adrian17 wykorzystałem tekstury SDL' a i teraz wszystko działa jak należy. Wątek pozostawiam otwarty w razie gdyby ktoś miał pomysł jak obejść ten problem bez używania tekstur.