SDL Forum Index
SDL
Simple DirectMedia Layer Forums
Reply to topic
Copy RGBA pixels directly to target texture without blending
stewambo


Joined: 04 Jun 2016
Posts: 13
Reply with quote
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 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
View user's profileSend private message
stewambo


Joined: 04 Jun 2016
Posts: 13
Reply with quote
Thanks to rtrussell (this thread) I tried the SDL_BLENDMODE_NONE again and found my mistake. Previously I always set the SDL_BLENDMODE_NONE for the target texture I wanted to render to, but I needed to set it for the static/streaming texture. Now it works perfectly fine.
View user's profileSend private message
Copy RGBA pixels directly to target texture without blending
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT  
Page 1 of 1  

  
  
 Reply to topic