如何解决SDL戴着面具发li
| 我有一个SDL_image / surface(原始),我想“遮住”另一个SDL_image / surface,该SDL_image / surface是一个遮罩,用于从原始文件中复制部分内容。 遮罩使用255定义要保留的部分,使用0定义需要从图像中删除的区域。 我目前正在遍历遮罩和原始图像的像素,这在输出中引起很多问题。 是否有使用SDL的blitting功能来执行此操作的现有技术?解决方法
听起来您的“遮罩”是一个Alpha通道。创建具有Alpha支持的SDL_image。
,如果有人正在寻找解决方案,请添加SDL2答案。没有其他库。
SDL2 API中提供以下功能:
int SDL_SetColorKey(SDL_Surface* surface,int flag,Uint32 key)
用于在表面上设置透明像素。在下面的示例中,我的业余爱好代码片段是在加载图片时使用的。
void* MGWindow::loadBMPImage(std::string fileName,bool transparent)
{
SDL_Surface* loadedImage = NULL;
SDL_Texture* optimizedImage = NULL;
loadedImage = SDL_LoadBMP(fileName.c_str());
if(loadedImage != NULL)
{
if(transparent)
{
// TODO: Make it possible to have other color codes than
// zero represent transparency
SDL_SetColorKey(loadedImage,SDL_TRUE,0);
}
optimizedImage = SDL_CreateTextureFromSurface(m_Renderer,loadedImage);
SDL_FreeSurface(loadedImage);
}
return (void*)optimizedImage;
}
参考:
https://wiki.libsdl.org/SDL_SetColorKey
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。