1

私はユーザーの画面解像度を取得して変数に割り当てることを目的とした小さなスクリプトを持っていますが、Access Violationエラーが発生し、それを修正する方法がわかりません(私はこの言語にまったく慣れていません)ので、誰かが私に見せてくれることを望んでいましたどのように書くべきか。

これが私の設定です:

//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);

誰かが私の間違いの原因を知っていますか?

4

1 に答える 1

1

SDL_initの前にSDL呼び出しを行うべきではありません。私の推測では、その時点で有効な状態にないため、GetVideoInfoはnullを返しています。また、initに渡すフラグが間違っているため、必要なビデオの種類ではなく、SDL_INIT_VIDEOである必要があります。ビデオフラグはSetVideoMode関数に移動する必要があります。

于 2012-10-28T01:12:36.903 に答える