Transparansi Teksture

Selain mengubah warna gambar berdasarkan modulasi warnanya, kita bisa juga mengubah transparansi gambar dengan SDL_SetTextureAlphaMod. Transparansi bisa bernilai dari 0 hingga 255. 0 adalah nilai untuk menjadikan gambar tidak terlihat, dan 255 akan menjadikan gambar terlihat tanpa transparansi. Nilai tersebut kita letakkan pada parameter kedua dari SDL_SetTextureAlphaMod.
  •  int SDL_SetTextureAlphaMod(SDL_Texture* texture, Uint8 alpha)
Pada contoh kode program di bawah ini, kita akan menggunakan dua gambar untuk melihat perbedaan warnanya. Dua gambar tersebut saya beri nama "gambar.png" dan "Codelogi.png". Kalian bisa menamainya dengan nama lain, tapi kalian juga harus mengubah nama di kode programnya. Kalian harus meletakkan gambar kalian di folder yang seharusnya supaya gambarnya terlihat dalam program.
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

int main(int argc, char* args[]){
    SDL_Window* window = NULL;
    SDL_Event evt;
    unsigned int transparansi=127;

    if( SDL_Init( SDL_INIT_VIDEO ) < 0 && IMG_Init(IMG_INIT_JPG|IMG_INIT_PNG)){
        printf( "Error: %s\n", SDL_GetError() );
    }else{
        window = SDL_CreateWindow( "SDLku", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
        if( window == NULL ){
            printf( "Error : %s", SDL_GetError() );
        }else{
            SDL_Renderer *trender = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

            SDL_Surface *tmp=IMG_Load("gambar.png");
            SDL_Surface *tmp2=IMG_Load("Codelogi.png");

            if(tmp && tmp2){
                int panjang=tmp->w;
                int tinggi=tmp->h;

                SDL_Texture *bmp=SDL_CreateTextureFromSurface(trender, tmp);
                SDL_FreeSurface(tmp);

                SDL_Texture *bmp2=SDL_CreateTextureFromSurface(trender, tmp2);
                SDL_FreeSurface(tmp2);

                if(bmp && bmp2){
                    SDL_Rect rct;
                    rct.x=0;
                    rct.w=0;
                    while(evt.type!=SDL_QUIT){
                        while(SDL_PollEvent(&evt)){
                            if(evt.type==SDL_KEYDOWN){
                                switch(evt.key.keysym.sym){
                                    case SDLK_q:
                                        transparansi-=16;
                                        if(transparansi<=0)transparansi=0;
                                        break;
                                    case SDLK_w:
                                        transparansi+=16;
                                        if(transparansi>255)transparansi=255;
                                        break;
                                    default:
                                        transparansi=255;
                                        break;
                                }
                            }
                            SDL_SetTextureAlphaMod(bmp, transparansi);
                        }

                        SDL_SetRenderDrawColor(trender, 0xFF, 0xFF, 0xFF, 0xFF);
                        SDL_RenderClear(trender);

                        rct.w=640;
                        rct.h=480;
                        SDL_RenderSetViewport(trender, &rct);
                        SDL_RenderCopy(trender, bmp2, NULL, NULL);

                        rct.w=panjang;
                        rct.h=tinggi;
                        SDL_RenderSetViewport(trender, &rct);
                        SDL_RenderCopy(trender, bmp, NULL, NULL);
                        SDL_RenderPresent(trender);
                    }
                }
            }
        }
    }

    SDL_DestroyWindow( window );
    SDL_Quit();

    return 0;
}

Contoh di atas menggunakan event keyboard, karena itu kalau kalian ingin melihat perubahan warnanya, tekan tombol keyboard kalian. Gunakan tombol q dan w untuk mengubah transparansinya.