SDL透明精灵方块
SDL transparent sprite squares
我在游戏中使用SDL库,在精灵的背景上有问题。
我有一个加载图像的函数:
SDL_Surface *loadImage(std::string path) {
SDL_Surface *image = NULL;
SDL_Surface *optimizedImage = NULL;
image = IMG_Load(path.c_str());
if (image) {
optimizedImage = SDL_DisplayFormat(image);
SDL_FreeSurface(image);
}
return optimizedImage;
}
加载精灵
image = sdlf::loadImage("images/image_sprites.jpg");
它们周围都有正方形
是否
循环内
sdlf::apply_surface(0, 0, image, screen, subj.getClipRun(i));
有人知道怎么去掉这些平方吗?
我们需要使用SDL_SetColorKey函数来实现这个目标吗?
请勿在制作游戏美术时使用JPEG
,这会使图像恶化,使其看起来更差。请使用BMP
格式(或PNG
,如果你想节省空间)。如果你的精灵有少于256种不同的颜色(也就是8位图像),你可以使用GIF
图像。
如果你坚持使用JPEG图像,那么你必须使用SDL_SetColorKey()
请勿使用JPG文件!
你可以使用"SDL_image 2"来处理png文件,或者直接使用位图。
要使用颜色键,只需添加
SDL_SetColorKey(image, SDL_TRUE, SDL_MapRGB(image->format, 0, 0xFF, 0xFF));(我在这里用青色)
所以它应该是这样的:
SDL_Surface *loadImage(std::string path) {
SDL_Surface *image = NULL;
SDL_Surface *optimizedImage = NULL;
image = IMG_Load(path.c_str());
SDL_SetColorKey(image, SDL_TRUE, SDL_MapRGB(image->format, 0, 0xFF, 0xFF));
if (image) {
optimizedImage = SDL_DisplayFormat(image);
SDL_FreeSurface(image);
}
return optimizedImage;
}
相关文章:
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 从精灵表在 sfml 中为精灵制作动画
- AABB 碰撞使实际精灵的大小翻倍
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 我的精灵使用名为 ASGE 的C++框架卡在屏幕边缘
- OpenGL只是渲染一个黑色的方块
- 如何为精灵编写复制构造函数
- 绘制精灵会导致分割错误
- 精灵动画查看器应该使用哪些Qt小部件
- 如何打印空心方块?
- Eclipse构建但不会启动精灵
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 打开 gl 精灵类不起作用
- 有没有办法在链接时设置精灵需要字段?
- 精灵没有动画
- 在不同位置渲染相同精灵的数组
- 如何在 SFML 上添加更多精灵?
- 精灵不显示我希望它们显示的方式
- 为什么精灵在 cocos2d-x 中颤抖
- SDL透明精灵方块