SDL DisplayFormat做矩形

时间:2011-12-23 16:51:39

标签: c++ sdl

我是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时圆圈仍然是一个圆圈。

1 个答案:

答案 0 :(得分:4)

这是因为您将图片转换为的显示格式不支持透明像素。您必须将视频模式设置为每像素32位,如下所示:

SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface *window = SDL_SetVideoMode(width, height, 32, flags);

// ...

您还需要将SDL_DisplayFormat更改为SDL_DisplayFormatAlpha