我是SDL和C ++的新手。
然而,当我在图像上执行DisplayFormat以便更快地进行blitting时,它会使它成为一个矩形。
SDL_Surface* tempImage = NULL;
// The image that will be used (optimized)
image = NULL;
image = IMG_Load( filename.c_str() );
if ( tempImage != NULL )
{
// Create optimization
image = SDL_DisplayFormat( tempImage ); // Makes the circle an rectangle
// Free the old image
SDL_FreeSurface( tempImage );
}
为什么?如果我不做DisplayFormat,那么在blitted时圆圈仍然是一个圆圈。
答案 0 :(得分:4)
这是因为您将图片转换为的显示格式不支持透明像素。您必须将视频模式设置为每像素32位,如下所示:
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface *window = SDL_SetVideoMode(width, height, 32, flags);
// ...
您还需要将SDL_DisplayFormat
更改为SDL_DisplayFormatAlpha
。