2013-01-03 68 views
0

我目前使用SDL在屏幕上繪製圖像,它沒有錯誤地加載圖像。但是當我將圖像繪製到屏幕上時,沒有顯示任何內容。這裏是我的代碼:SDL不繪製圖像

圖像加載功能:

SDL_Surface *d2Sprite::Load(char *file) 
{ 
SDL_Surface *temp = NULL; 
SDL_Surface *opt = NULL; 

if((temp = SDL_LoadBMP(file)) == NULL) 
{ 
    cout << "Unable to load image '" << file << "'. " << SDL_GetError() << endl; 
    return NULL; 
} 

opt = SDL_DisplayFormatAlpha(temp); 
SDL_FreeSurface(temp); 

return opt; 
} 

繪圖功能:

bool d2Sprite::Draw(SDL_Surface *dest, SDL_Surface *src, int x, int y) 
{ 
if(dest == NULL || src == NULL) 
{ 
    cout << "Unable draw sprite! " << SDL_GetError() << endl; 
    return false; 
} 

SDL_Rect destR; 
destR.x = x; 
destR.y = y; 

SDL_BlitSurface(src, NULL, dest, &destR); 

return true; 
} 

回答

1

您沒有設置用於阻擊器,destR矩形的width and height

您應檢查blir操作的返回值弄清它是否成功。

此外,您可能有問題與alpha混合,因爲您啓用表面阿爾法,但在這樣做之前不設置它。請參閱SDL_BlitSurface()文檔。

+0

嗨,我試過你的建議,但它仍然沒有畫。如果您可以查看一下,我已經上傳了整個源代碼,https://docs.google.com/open?id=0B54ow8GRluDUVFRydU9wX1lIWjQ。我一直在試圖讓圖像畫好幾天。謝謝。 – Antony

1

你畢竟您的通話繪製調用SDL_Flip()()?你需要這個來翻轉你的後臺緩衝區(blitting發生的地方)和前臺緩衝區(屏幕上顯示的內容)。