目次 - SDL 3.0 API(機能別) - ディスプレイとウィンドウ - SDL_CreateWindowWithProperties

SDL_CreateWindowWithProperties

プロパティを指定してウィンドウを生成する

ヘッダ

SDL3/SDL_video.h

構文

SDL_Window * SDL_CreateWindowWithProperties(SDL_PropertiesID props);

引数

SDL_PropertiesIDprops設定するプロパティ

戻り値

(SDL_Window *) 生成されたウィンドウを戻す. 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

ウィンドウのサイズはデスクトップレイアウトやウィンドウマネージャの方針により要求と異なる場合がある. アプリケーションはあらゆるサイズのウィンドウを扱えるように準備すべきである.

これらのプロパティに対応している:

macOSの場合, これらの追加のプロパティに対応している:

Waylandの場合, これらの追加のプロパティに対応している:

Windowsの場合, これらの追加のプロパティに対応している:

X11の場合, これらの追加のプロパティに対応している:

ウィンドウは明確に"hidden"プロパティを設定しない限り表示される.

Emscriptenの場合, これらの追加のプロパティに対応している:

SDL_Rendererを使用するウィンドウを生成する場合, SDLが内部で選択するため, グラフィックAPIを特定するプロパティ(SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN等)を追加してはならない. しかし, SDLはこの時点でウィンドウを再生成する必要があるかもしれず, この場合はウィンドウが一瞬表示され, そして再生成されるときちらついて見える. SDL_PROP_WINDOW_CREATE_HIDDEN_BOOLEANプロパティを真にしてウィンドウを生成し, その後にレンダラを生成し, その後にSDL_ShowWindow()でウィンドウを表示するのは良い方法だろう.

スレッドセーフ

この関数を呼べるのはメインスレッドのみである.

バージョン

SDL 3.2.0以降

サンプルコード

// サンプルプログラム:
// SDL3でプロパティを指定してウィンドウを生成する

#include <SDL3/SDL_log.h>
#include <SDL3/SDL_main.h>
#include <SDL3/SDL_video.h>

int
main(int argc, char** argv)
{
  if (!SDL_Init(SDL_INIT_VIDEO)) {
    SDL_Log("SDLを初期化できなかった: %s", SDL_GetError());
    return 0;
  }

  SDL_PropertiesID props = SDL_CreateProperties();
  if(props == 0) {
    SDL_Log("プロパティを生成できなかった: %s", SDL_GetError());
    return 0;
  }

  // これらの呼び出しは成功するとみなす
  SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, "My Window");
  SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_RESIZABLE_BOOLEAN, true);
  SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, 640);
  SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, 480);

  SDL_Window *window = SDL_CreateWindowWithProperties(props);
  if(window == NULL) {
    SDL_Log("ウィンドウを生成できなかった: %s", SDL_GetError());
    return 0;
  }

  // ここでゲームのループを行う

  SDL_DestroyWindow(window);
  SDL_DestroyProperties(props);

  return 0;
}

関連項目

SDL Wikiへのリンク

SDL_CreateWindowWithProperties - SDL Wiki