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);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.
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);
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 :
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.
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);
Merci.
Partager