[英]SDL_Texture opacity
如何更改 SDL_Texture 的不透明度? 而且我不知道如何在我的函数中应用不透明度数。
我的代码
void drawTexture(SDL_Texture *img, int x, int y, int width, int height, double opacity)
{
SDL_Rect SrcR;
SDL_Rect DestR;
SrcR.x = 0;
SrcR.y = 0;
SrcR.w = width;
SrcR.h = height;
DestR.x = x;
DestR.y = y;
DestR.w = width;
DestR.h = height;
SDL_RenderCopy(_main::_main_renderer, img, &SrcR, &DestR);
}
SDL_SetTextureAlphaMod(img, opacity);
这将设置纹理的不透明度(alpha),alpha 值必须是从0
(完全透明又名不可见)到255
(完全不透明)的Uint8
。
开场问题没有关于img纹理来源的信息,所以选择的答案它不会纠正纹理是从没有 Alpha 的原始像素数据创建的,即使用这个:
SDL_UpdateTexture(img, NULL, pixels, pitch);
如果像素包含没有 alpha 的原始像素数据,即带有A 0x00 的 ARGB,即使您这样做
SDL_UpdateTexture(img, NULL, pixels, pitch);
SDL_SetTextureAlphaMod(img, opacity);
你不会看到纹理(在这种情况下 alpha 是 0x00)或者你会看到垃圾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.