2011-12-23 7 views
0

SDLとC++の新機能です。SDL DisplayFormatは矩形を表します

しかし、私は、より速いblittingのために画像にDisplayFormatを実行すると、それは矩形になります。

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のときに円は円のままです。

答えて

4

これは、画像を変換する表示形式が透明なピクセルをサポートしていないためです。あなたは以下のように、ピクセルあたり32ビットを持っているあなたのビデオモードを設定する必要があります。

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

// ... 

ます。またSDL_DisplayFormatAlphaSDL_DisplayFormatを変更する必要があります。

+0

私のスクリーンサーフェスの初期化は、次のようになります:SDL_SetVideoMode(SCREEN_WIDTH、SCREEN_HEIGHT、32、SDL_SWSURFACE | SDL_DOUBLEBUF); :S –

+0

@Hasslarn:おっと、何かを忘れてしまった。私の答えをもう一度チェックしてください。 –

+0

私はあなたが私の感謝を示すのに十分であるべきであることを愛する。ありがとう –