如何将两个SDL2纹理混合成一个纹理?

3
SDL_RenderClear(g_ren);

SDL_Texture *tex_bk = SDL_CreateTextureFromSurface(g_ren, bk);

SDL_Texture *tex_des = SDL_CreateTextureFromSurface(g_ren, widget);
SDL_RenderCopy(g_ren, tex_bk, NULL, NULL);
SDL_SetTextureBlendMode(tex_des,blendMode);
SDL_SetRenderDrawBlendMode(g_ren,blendMode);

SDL_RenderCopy(g_ren, tex_des, NULL, NULL);

SDL_RenderPresent(g_ren);
SDL_DestroyTexture(tex_des);
SDL_DestroyTexture(tex_bk);

我想使用SDL_RenderCopy复制tex_bk,并在第二次使用SDL_RenderCopy混合tex_des。但应用程序总是显示tex_des图像,而tex_bk图像总是消失。
1个回答

3
你混淆了这些函数的用途。
SDL_SetTextureBlendMode 用于改变指定纹理的 alpha 混合方式。
SDL_SetRenderDrawBlendMode 用于改变绘制基本图形(如点、线和矩形)时的 alpha 混合方式。
你可能要使用的函数是 SDL_SetTextureAlphaMod。

有没有一个好的资源可以了解更多关于alphaMod的内容? - activedecay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接