2012-10-28 68 views
0

我有一個小腳本,用於獲取用戶的屏幕分辨率並將其分配給一個變量,但我得到Access Violation錯誤,不知道如何解決它(我對這種語言很陌生)所以希望有人能告訴我該怎麼寫。使用SDL訪問衝突

這是我的設置:

//get player's screen info 
const SDL_VideoInfo* myScreen = SDL_GetVideoInfo(); 

//SDL screen 
SDL_Surface *screen; 
int reso_x = myScreen->current_w; //resolution width (ERROR here) 
int reso_y = myScreen->current_h; //resolution height 
Uint8 video_bpp = 32; 
Uint32 videoflags = SDL_SWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT;// | SDL_FULLSCREEN; 

/* Initialize the SDL library */ 
if (SDL_Init(videoflags) < 0) { 
    fprintf(stderr, "Couldn't initialize SDL: %s\n", 
    SDL_GetError()); 
    exit(1); 
    } 

//setup Screen 
screen = SDL_SetVideoMode(reso_x, reso_y, video_bpp, videoflags|SDL_FULLSCREEN); 

是否有任何人知道我的錯誤的原因是什麼?

回答

1

您不應在SDL_init之前進行任何SDL調用。我的猜測是GetVideoInfo返回null,因爲在那時你還沒有處於有效狀態。此外,你傳遞給init的標誌是錯誤的,它應該是SDL_INIT_VIDEO而不是你想要的視頻類型。您的視頻標誌應該轉到SetVideoMode功能。

+0

ah so SDL_Init(SDL_INIT_VIDEO)? – Sir

+0

@Dave http://sdl.beuc.net/sdl.wiki/SDL_Init有SDL_Init的可接受標誌列表。我通常使用SDL_INIT_EVERYTHING,如果不使用「所有」,則不用擔心。 – stonemetal

+0

我的優化代碼的OCD永遠不會允許我初始化一切,如果我從不使用它! :P – Sir