[SDL] Copy RGBA pixels directly to target texture without blending

Sanette sanette-linux at laposte.net
Thu Mar 16 08:18:54 PDT 2017


have you tried SDL_BLENDMODE_NONE ?

(instead of SDL_BLENDMODE_BLEND)


Le 16/03/2017 à 16:11, stewambo a écrit :
> Hello,
> I have a texture with static (or streaming) access and I need to 
> render other stuff onto it, so I need to convert it to a 
> target-texture. Therefor I just created an empty texture with 
> SDL_TEXTUREACCESS_TARGET and set it as rendering target, but when i 
> render my semi-transparent static/streaming texture onto it the black 
> transparent background of the target-texture bleeds into the 
> transparent part of my original texture
>
> Original image:
>
>
> Left: original texture rendered directly;
> Right: target-texture with original texture rendered ontop (obviously 
> not the same, but darker)
>
>
> Code to create the image above:
>
>
>
>
>
>
>
> Code:
>
> SDL_Surface* surface = 
> SDL_ConvertSurfaceFormat(IMG_Load("D:/Documents/Visual Studio 
> 2015/Projects/SDLTest/resources/textures/gradientTexture.png"), 
> SDL_PIXELFORMAT_RGBA8888, NULL);
> SDL_Texture* staticTexture = SDL_CreateTextureFromSurface(renderer, 
> surface);
> SDL_Texture* targetTexture = SDL_CreateTexture( renderer, 
> SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 50, 50 );
>
> SDL_SetRenderTarget(renderer, targetTexture);
> SDL_SetTextureBlendMode(targetTexture, SDL_BLENDMODE_BLEND);
> SDL_RenderCopy(renderer, staticTexture, NULL, NULL);
> SDL_SetRenderTarget(renderer, NULL);
>
> SDL_Rect rect0{ 50,50,50,50 };
> SDL_RenderCopy(renderer, staticTexture, NULL, &rect0);
> SDL_Rect rect1{ 100,50,50,50 };
> SDL_RenderCopy(renderer, targetTexture, NULL, &rect1);
>
>
>
> The solution to my problem in this topic 
> <https://forums.libsdl.org/viewtopic.php?t=12064> was to set the 
> background color of the target texture to one solid color, but here 
> this doesn't work because the static texture is not a solid color...
>
> So how can i get my target-texture to look exactly like my original 
> texture, or is there a way to copy the RGBA information directly into 
> the new texture without the need to render it using a blend mode?
>
> Thanks Smile
>
>
> _______________________________________________
> SDL mailing list
> SDL at lists.libsdl.org
> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org


-- 
sanette -- full_time_linux

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20170316/05bcadf9/attachment-0001.htm>


More information about the SDL mailing list