与えられたフォーマットとビデオのフラグに対し、 利用可能な画面モードの配列へのポインタを返します。 大きい方から小さい方にソートされています。 ある特定のフォーマットに対し利用可能なモードがない場合は NULL を返し、 与えられたフォーマットに対しどのモードでも OK の場合は -1 を返します。
format が NULL の場合は、 モードリストは SDL_GetVideoInfo()->vfmt から返値として得られるフォーマットになるでしょう。 flag パラメータは サーフェス のフラグの OR による組み合わせです。 フラグは SDL_SetVideoMode で使われるものと同じであり、モードが有効かどうかを決定する際に 強い役割を果たします。 例えば、SDL_HWSURFACE をフラグとして渡すと、 ハードウェアのビデオサーフェスがサポートするモードだけが返されます。
SDL_Rect **modes;
int i;
.
.
.
/* 利用可能なフルスクリーンハードウェアモードを取得する */
modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
/* 利用可能なモードがあるかどうかチェック */
if(modes == (SDL_Rect **)0){
printf("利用可能なモードがありません!\n");
exit(-1);
}
/* 解像度が制限されているかどうかチェック */
if(modes == (SDL_Rect **)-1){
printf("全解像度が利用可能です。\n");
}
else{
/* 有効なモードを表示 */
printf("利用可能なモード\n");
for(i=0;modes[i];++i)
printf(" %d x %d\n", modes[i]->w, modes[i]->h);
}
.
.