2012-05-24 25 views
2

我有下面的代碼從Lazy爲什麼SDL程序不顯示BMP圖片?

#include <iostream> 
#include "SDL/SDL.h" 

using namespace std; 

int main() 
{ 
    //Start SDL 
    SDL_Init(SDL_INIT_EVERYTHING); 

    SDL_Surface *hello = NULL; 
    SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); 

    hello = SDL_LoadBMP("hello.bmp"); 
    SDL_BlitSurface(hello, NULL, screen, NULL); 
    SDL_Flip(screen); 
    SDL_Delay(3000); 
    SDL_FreeSurface(hello); 

    //Quit SDL 
    SDL_Quit(); 
    return 0; 
} 

不時的圖片顯示,但是大多數時間它只是一個黑色窗口(與此圖片的纖薄字符串)。我在同一個目錄下找到名稱爲「hello.bmp」的BMP文件。 PS:我有ArchLinux。

回答

2

在顯示圖像之前,應將其轉換爲與所選視頻模式兼容的格式。 因此,你應該執行這樣的事情:

SDL_Surface *imagef; 
imagef = SDL_DisplayFormat(image); 

bliting您的BMP使用前和使用imagef您的所有操作。

+0

謝謝!你是對的。但這是否發生。教程中沒有它的標誌。 – Allok

+0

我不知道那個教程。我根據自己的知識回答。 「這是否發生」是什麼意思?而且,如果我的回答是你正在尋找的東西,你會接受嗎? – Stencil

+0

當然,沒問題)但是我不明白爲什麼它在大多數情況下都沒有格式化(我已經使用了它並在類似的問題上看到了很多答案:「它可以在我的電腦上正常運行」)。 – Allok