Mam taki problem, chce pozmieniać w swoim programie, niektóre piksele załadowanego obrazka *.png na przezroczyste, po załadowaniu obrazka do programu.
znalazłem jakieś rozwiązanie na https://itproblemy.pl/questions/18556623/sdl2-messed-up-image-with-manipulating-pixels-and-sdlupdatetexture>
i to nie działa tak to zrobiłem na postawie tego co znalazłem:```
SDL_Texture* loadGleba( string path )
{
void* pixels = NULL;
int pitch = 0;
SDL_Texture* newTexture = NULL;
SDL_Surface* loadedSurface = IMG_Load( path.c_str() );
SDL_Surface* imageFomatted = SDL_ConvertSurfaceFormat(loadedSurface,
SDL_PIXELFORMAT_RGBA8888,
NULL);
if( loadedSurface == NULL )
{
cout<<"nie mozna zaladowac obrazka: "<<path.c_str()<<"! blad:"<<IMG_GetError()<<endl;
}
newTexture = SDL_CreateTexture(gRenderer,
SDL_PIXELFORMAT_RGBA8888,
SDL_TEXTUREACCESS_STREAMING,
imageFomatted->w, imageFomatted->h);
SDL_LockTexture(newTexture, &imageFomatted->clip_rect, &pixels, &pitch);
memcpy(pixels, imageFomatted->pixels, (imageFomatted->pitch * imageFomatted->h));
int width = imageFomatted->w;
int height = imageFomatted->h;
punkt(width,height).pisz();
Uint32* pixels32 = (Uint32*)pixels;
int pixelCount = (pitch / 4) * height;
Uint32 transparent = SDL_MapRGBA(imageFomatted->format, 0x80, 0x80, 0x80, 0x00);
for (int i = 5000; i < pixelCount-5000; i++)
pixels32[i]=transparent;// tu chce przezroczysty mieć pisel
SDL_UnlockTexture(newTexture);
SDL_FreeSurface(imageFomatted);
SDL_FreeSurface(loadedSurface);
return newTexture;
}```
i tam gdzie ustawiam przezroczyste wychodzi białe. Myślę że problem jest związany z formatami ale nie wiem gdzie.
z góry dziękuje za pomoc