Nanashi-soft○プログラマ専用○Windows gcc SDL○
表示できない画面モードに変更すると、フリーズするパソコンもあります
ちゃんと環境を調べてから SDL_SetVideoModeを行いましょう
指定した画面モード&色深度でのフルスクリーン表示が可能か調べます
int bpp=SDL_VideoModeOK(1024, 768, 32, SDL_SWSURFACE|SDL_FULLSCREEN); printf("bpp=%d\n",bpp); if(bpp != 32){ SDL_Quit(); return -1; }
注意点として、SDL_VideoModeOKの戻り値は、可能な色深度です
ですから、指定した色深度と等しい事を if文で調べなければなりません
可能かどうか? の true/falseでは無いのでハマらないように
ピンポイントにゲームモードと同じ画面サイズでは無く、少し大きな画面が可能な場合もあるので、ちゃんと調べる方が良いです
例えば 720p(1280x720)で設計していたとして、普通のディスプレイは 1280x1024しか持っていないことがほとんどです
modes=SDL_ListModes(NULL, SDL_SWSURFACE|SDL_FULLSCREEN); if(modes == (SDL_Rect **)0){ printf("video mode error.\n"); exit(-1); } if(modes == (SDL_Rect **)-1){ printf("video mode all ok!\n"); } else{ /* 有効なモードを表示 */ printf("video mode error.\n"); for(i=0;modes[i];++i){ printf("%d x %d\n", modes[i]->w, modes[i]->h); } }
これで、可能なモード一覧が取得できるので、適切なモードに変更する
ちなみに、一番最初に出てくるのが推奨モードらしい
例えば、うちのサブディスプレイは 1024x768表示だが、これを 800x600に手動で変更してから SDL_ListModes取ると、最初に
1024x768が出てくる
どちらも、DirectX必須であれば、ハードウェアモードで問い合わせた方が良いです
SDL_SWSURFACE → SDL_HWSURFACE