Bonjour, j'ai un sprite, une image png transparente que j'essaie de blitter sur une texture, laquelle est copiée sur le renderer :

Création de la texture 800*600 avec un fond (p_fond_1 et une SDL_Surface qui vient d'une image PNG en 800*600)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_texture=SDL_CreateTextureFromSurface(p_renderer, p_fond_1);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
//Copie de mon sprite
SDL_UpdateTexture(p_texture, &rect, p_brush->pixels, p_brush->pitch);
// on efface le renderer
SDL_RenderClear( p_renderer );
//on copie la texture modifiée qui fait la meme taille que l'écran
SDL_RenderCopy(p_renderer, p_texture, NULL, NULL);
SDL_RenderPresent(p_renderer);
L'image de fond s'affiche correctement mais pas le sprite, on dirait juste une modification de la memoire sans que la couleur du sprite (qui a une palette différente du fond) apparaisse, on dirait que la palette du fond est utilisé avec les datas de mon sprite, forcément ça m'arrange pas.
Donc j'aimerais savoir si je dois continuer dans mon idée de copier mon sprite avec un updateTexture ou alors le faire à l'ancienne avec des SDL_Surface mais bon j'ai l'impression que ça serait pas super optimisé.
J'ai aussi essayé de faire comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
     //
    p_texture_fond_1=SDL_CreateTextureFromSurface(p_renderer, p_fond_1);
     //
    p_texture_brush=SDL_CreateTextureFromSurface(p_renderer, p_brush);
    //
    SDL_RenderCopy(p_renderer, p_texture_fond_1, &src, &dest);
    SDL_RenderPresent(p_renderer);
[Boucle while]
    SDL_RenderCopy(p_renderer, p_texture_brush, NULL, &dest);
    //je change dest, le but est de faire une trainée de 100 sprite entre 2 coordonnées
[fin boucle]
    SDL_RenderPresent(p_renderer);
Mais là ça marche bien sauf qu'en Fulldesktopscreen mon image de fond scintille comme si une image sur 2 était noire et l'autre était le fond.

Merci.