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

ディスプレイとウィンドウ

インクルードファイル: SDL_video.h

概要

これらの関数はディスプレイとウィンドウを扱うためのものである.

列挙体

  1. SDL_BlendMode
  2. SDL_GLattr
  3. SDL_GLcontextFlag
  4. SDL_GLprofile
  5. SDL_WindowEventID
  6. SDL_WindowFlags

構造体

  1. SDL_DisplayMode
  2. SDL_WindowEvent

関数

  1. SDL_CreateWindow
  2. SDL_CreateWindowAndRenderer
  3. SDL_CreateWindowFrom
  4. SDL_DestroyWindow
  5. SDL_DisableScreenSaver
  6. SDL_EnableScreenSaver
  7. SDL_GL_BindTexture
  8. SDL_GL_CreateContext
  9. SDL_GL_DeleteContext
  10. SDL_GL_ExtensionSupported
  11. SDL_GL_GetAttribute
  12. SDL_GL_GetCurrentContext
  13. SDL_GL_GetCurrentWindow
  14. SDL_GL_GetDrawableSize
  15. SDL_GL_GetProcAddress
  16. SDL_GL_GetSwapInterval
  17. SDL_GL_LoadLibrary
  18. SDL_GL_MakeCurrent
  19. SDL_GL_ResetAttributes
  20. SDL_GL_SetAttribute
  21. SDL_GL_SetSwapInterval
  22. SDL_GL_SwapWindow
  23. SDL_GL_UnbindTexture
  24. SDL_GL_UnloadLibrary
  25. SDL_GetClosestDisplayMode
  26. SDL_GetCurrentDisplayMode
  27. SDL_GetCurrentVideoDriver
  28. SDL_GetDesktopDisplayMode
  29. SDL_GetDisplayBounds
  30. SDL_GetDisplayMode
  31. SDL_GetDisplayName
  32. SDL_GetNumDisplayModes
  33. SDL_GetNumVideoDisplays
  34. SDL_GetNumVideoDrivers
  35. SDL_GetVideoDriver
  36. SDL_GetWindowBrightness
  37. SDL_GetWindowData
  38. SDL_GetWindowDisplayIndex
  39. SDL_GetWindowDisplayMode
  40. SDL_GetWindowFlags
  41. SDL_GetWindowFromID
  42. SDL_GetWindowGammaRamp
  43. SDL_GetWindowGrab
  44. SDL_GetWindowID
  45. SDL_GetWindowMaximumSize
  46. SDL_GetWindowMinimumSize
  47. SDL_GetWindowPixelFormat
  48. SDL_GetWindowPosition
  49. SDL_GetWindowSize
  50. SDL_GetWindowSurface
  51. SDL_GetWindowTitle
  52. SDL_GetWindowWMInfo
  53. SDL_HideWindow
  54. SDL_IsScreenSaverEnabled
  55. SDL_MaximizeWindow
  56. SDL_MinimizeWindow
  57. SDL_RaiseWindow
  58. SDL_RestoreWindow
  59. SDL_SetWindowBordered
  60. SDL_SetWindowBrightness
  61. SDL_SetWindowData
  62. SDL_SetWindowDisplayMode
  63. SDL_SetWindowFullscreen
  64. SDL_SetWindowGammaRamp
  65. SDL_SetWindowGrab
  66. SDL_SetWindowIcon
  67. SDL_SetWindowMaximumSize
  68. SDL_SetWindowMinimumSize
  69. SDL_SetWindowPosition
  70. SDL_SetWindowSize
  71. SDL_SetWindowTitle
  72. SDL_ShowMessageBox
  73. SDL_ShowSimpleMessageBox
  74. SDL_ShowWindow
  75. SDL_UpdateWindowSurface
  76. SDL_UpdateWindowSurfaceRects
  77. SDL_VideoInit
  78. SDL_VideoQuit

SDL Wikiへのリンク

CategoryVideo - SDL Wiki

SDL_BlendMode

SDL_RenderCopy()と描画操作で使われるブレンドモードの列挙体

SDL_BLENDMODE_NONEブレンドしないdstRGBA = srcRGBA
SDL_BLENDMODE_BLENDアルファブレンディングdstRGB = (srcRGB * srcA) + (dstRGB * (1 - srcA))
dstA = srcA + (dstA * (1 - srcA))
SDL_BLENDMODE_ADD加算ブレンディングdstRGB = (srcRGB * srcA) + dstRGB
dstA = dstA
SDL_BLENDMODE_MODcolor modulatedstRGB = srcRGB * dstRGB
dstA = dstA

関連項目(構造体)

SDL_RendererInfo

関連項目(関数)

SDL_GetRenderDrawBlendMode
SDL_GetSurfaceBlendMode
SDL_GetTextureBlendMode
SDL_RenderCopy
SDL_SetRenderDrawBlendMode
SDL_SetSurfaceBlendMode
SDL_SetTextureBlendMode

SDL Wikiへのリンク

SDL_BlendMode - SDL Wiki

SDL_GLattr

OpenGLの属性の設定のための列挙体

SDL_GL_RED_SIZEカラーバッファの赤色チャネルの最小ビット数. デフォルトは3
SDL_GL_GREEN_SIZEカラーバッファの緑色チャネルの最小ビット数. デフォルトは3
SDL_GL_BLUE_SIZEカラーバッファの青色チャネルの最小ビット数. デフォルトは2
SDL_GL_ALPHA_SIZEカラーバッファのアルファチャネルの最小ビット数. デフォルトは0
SDL_GL_BUFFER_SIZEフレームバッファの最小ビット数. デフォルトは0
SDL_GL_DOUBLEBUFFERシングルか, ダブルバッファか. デフォルトはダブルバッファ
SDL_GL_DEPTH_SIZE深度バッファのビット数. デフォルトは16
SDL_GL_STENCIL_SIZEステンシルバッファのビット数. デフォルトは0
SDL_GL_ACCUM_RED_SIZE蓄積バッファの赤色チャネルの最小ビット数. デフォルトは0
SDL_GL_ACCUM_GREEN_SIZE蓄積バッファの緑色チャネルの最小ビット数. デフォルトは0
SDL_GL_ACCUM_BLUE_SIZE蓄積バッファの青色チャネルの最小ビット数. デフォルトは0
SDL_GL_ACCUM_ALPHA_SIZE蓄積バッファのアルファチャネルの最小ビット数. デフォルトは0
SDL_GL_STEREOステレオ3Dで出力するか. デフォルトはオフ
SDL_GL_MULTISAMPLEBUFFERSマルチサンプル アンチエイリアスで使うバッファの数. デフォルトは0. 詳細を参照すること
SDL_GL_MULTISAMPLESAMPLESマルチサンプル アンチエイリアスで使うピクセルの周辺のサンプル数. デフォルトは0. 詳細を参照すること
SDL_GL_ACCELERATED_VISUAL1を設定するとハードウェアアクセラレーション, 0を設定すると強制的にソフトウェアレンダリングを使う. デフォルトは両方を許可する
SDL_GL_RETAINED_BACKING未使用 (廃止)
SDL_GL_CONTEXT_MAJOR_VERSIONOpenGLコンテキストのメジャーバージョン. 詳細を参照すること
SDL_GL_CONTEXT_MINOR_VERSIONOpenGLコンテキストのマイナーバージョン. 詳細を参照すること
SDL_GL_CONTEXT_FLAGS0個以上のSDL_GLcontextFlag列挙体の要素. デフォルトは0
SDL_GL_CONTEXT_PROFILE_MASKOpenGLコンテキストの種類(Core, Compatibility, ES). SDL_GLprofile列挙体を参照すること. デフォルトは環境に依存する
SDL_GL_SHARE_WITH_CURRENT_CONTEXTOpenGLコンテキストのシェア. デフォルトは0
SDL_GL_FRAMEBUFFER_SRGB_CAPABLEsRGBの使用を要求する. デフォルトは0. (SDL 2.0.1以上)
SDL_GL_CONTEXT_EGL未使用 (廃止)

サンプルコード

SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_DOUBLEBUFFER, 1);
SDL_GL_CreateContext(window);

詳細

通常, OpenGLのほとんどの属性は設定できるが, 上記の属性はSDLがOpenGLコンテキストを使うため, ウィンドウを生成する前にわかっている必要がある. これらの属性はSDL_GL_SetAttribute()SDL_GL_GetAttribute()で設定, 獲得できる.

これらの属性は最小値の要求の場合がある. つまりGLは要求したちょうどの値を保障しない. 例えば, 16bitの深度バッファを要求して24bitの深度バッファが設定されることや, ステンシルバッファを使わないように要求したが存在する, ということはありうる. GLが要求された最小の属性を提供できない場合はコンテキストの生成は必ず失敗する. しかし, 設定された属性がちょうどであるかを知るためにはチェックしなければならない.

マルチサンプル アンチエイリアシングはフルスクリーンのアンチエイリアシングである. マルチサンプル アンチエイリアシングはデフォルトではオフだが, SDL_GL_MULTISAMPLEBUFFERSを1, SDL_GL_MULTISAMPLESAMPLESを0以上にするとオンになる. よく使われる値は2と4である.

SDL_GL_CONTEXT_PROFILE_MASKは生成されたコンテキストで決まる. SDL_GL_CONTEXT_MAJOR_VERSIONSDL_GL_CONTEXT_MINOR_VERSIONも同じである. これら3つの属性は最初のウィンドウが生成される前に設定する必要がある. そして, 通常はSDL_GL_CONTEXT_PROFILE_MASKの値は, 以前の設定で生成したウィンドウを全ての閉じるまでは変更できない.

関連項目(関数)

SDL_GL_GetAttribute
SDL_GL_SetAttribute
SDL_GL_CreateContext

SDL Wikiへのリンク

SDL_GLattr - SDL Wiki

SDL_GLcontextFlag

OpenGLコンテキストの設定フラグのための列挙体

SDL_GL_CONTEXT_DEBUG_FLAG詳細を参照すること
SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG詳細を参照すること
SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG詳細を参照すること
SDL_GL_CONTEXT_RESET_ISOLATION_FLAG詳細を参照すること

詳細

この列挙体はSDL_GL_SetAttributeSDL_GL_CONTEXT_FLAGSと組み合わせて使う. フラグを論理和で複数設定できる.

SDL_GL_CONTEXT_DEBUG_FLAG

このフラグは, X11のGLX_ARB_create_context拡張のGLX_CONTEXT_DEBUG_BIT_ARB, WindowsのWGL_ARB_create_context拡張のWGL_CONTEXT_DEBUG_BIT_ARBにマップされている. 他の環境では同様の機能がないため無視される.

SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG

このフラグは, X11のGLX_ARB_create_context拡張のGLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, WindowsのWGL_ARB_create_context拡張のWGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARBにマップされている. 他の環境では同様の機能がないため無視される.

SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG

このフラグは, X11ではGLX_ARB_create_context_robustness拡張のGLX_CONTEXT_ROBUST_ACCESS_BIT_ARB, WindowsではWGL_ARB_create_context_robustness拡張のWGL_CONTEXT_ROBUST_ACCESS_BIT_ARBにマップされている. 他の環境では同様の機能がないため無視される.

SDL_GL_CONTEXT_RESET_ISOLATION_FLAG

このフラグは, X11ではGLX_ARB_robustness_isolation拡張のGLX_CONTEXT_RESET_ISOLATION_BIT_ARB, WindowsではWGL_ARB_create_context_robustness拡張のWGL_CONTEXT_RESET_ISOLATION_BIT_ARBにマップされている. 他の環境では同様の機能がないため無視される.

関連項目(列挙体)

SDL_GLattr

関連項目(関数)

SDL_GL_GetAttribute
SDL_GL_SetAttribute

SDL Wikiへのリンク

SDL_GLcontextFlag - SDL Wiki

SDL_GLprofile

OpenGLプロファイルのための列挙体

SDL_GL_CONTEXT_PROFILE_COREOpenGL コアプロファイル - 廃止された機能は無効になる
SDL_GL_CONTEXT_PROFILE_COMPATIBILITYOpen GL 互換プロファイル - 廃止された機能は許可される
SDL_GL_CONTEXT_PROFILE_ESOpen GL プロファイル - OpenGLのサブセット機能のみ使える

詳細

この列挙体はSDL_GL_SetAttributeSDL_GL_CONTEXT_PROFILE_MASKと組み合わせて使う. SDL_GL_CONTEXT_PROFILE_MASKは論理和で複数設定できるが, プロファイルは排他的であり, SDL_GL_SetAttributeは1つしか受け付けない. SDL_GL_CONTEXT_PROFILE_MASK属性を0にするとプロファイルはSDLが選択する. OpenGLのプロファイルはバージョンと詳細に関連付けられているため, SDL_GL_CONTEXT_MAJOR_VERSIONSDL_GL_CONTEXT_MINOR_VERSION属性は必ず一緒に使う必要がある. OpenGL ES バージョン1.0と1.1のcommonとcommon liteプロファイルを区別する方法はない.

関連項目(列挙体)

SDL_GLattr

関連項目(関数)

SDL_GL_GetAttribute
SDL_GL_SetAttribute

SDL Wikiへのリンク

SDL_GLcontextFlag - SDL Wiki

SDL_WindowEventID

ウィンドウイベントのための列挙体

SDL_WINDOWEVENT_NONE(この値が使われることはない)
SDL_WINDOWEVENT_SHOWNウィンドウが見えるようになった
SDL_WINDOWEVENT_HIDDENウィンドウが見えないようになった
SDL_WINDOWEVENT_EXPOSEDウィンドウが現れた. 再描画する必要がある
SDL_WINDOWEVENT_MOVEDウィンドウがdata1からdata2へ移動した
SDL_WINDOWEVENT_RESIZEDウィンドウの大きさがdata1×data2になった. このイベントは常にSDL_WINDOWEVENT_SIZE_CHANGEDの前に発生する
SDL_WINDOWEVENT_SIZE_CHANGEDウィンドウの大きさが変わった. APIの呼び出しの結果とユーザが大きさを変えた場合の両方がある. このイベントは, 大きさが外部の要因, 例えばユーザやウィンドウマネージャで変えられた場合, SDL_WINDOWEVENT_RESIZEDイベントの後に発生する.
SDL_WINDOWEVENT_MINIMIZEDウィンドウが最小化された
SDL_WINDOWEVENT_MAXIMIZEDウィンドウが最大化された
SDL_WINDOWEVENT_RESTOREDウィンドウが通常の大きさと位置になった
SDL_WINDOWEVENT_ENTERウィンドウがマウスのフォーカスを得た
SDL_WINDOWEVENT_LEAVEウィンドウがマウスのフォーカスを失った
SDL_WINDOWEVENT_FOCUS_GAINEDウィンドウがキーボードのフォーカスを得た
SDL_WINDOWEVENT_FOCUS_LOSTウィンドウがキーボードのフォーカスを失った
SDL_WINDOWEVENT_CLOSEウィンドウマネージャが閉じることを要求した

関連項目(構造体)

SDL_WindowEvent

関連項目(関数)

SDL_GetWindowID
SDL_GetWindowFromID

SDL Wikiへのリンク

SDL_WindowEventID - SDL Wiki

SDL_WindowFlags

ウィンドウの状態のための列挙体

SDL_WINDOW_FULLSCREENフルスクリーン
SDL_WINDOW_FULLSCREEN_DESKTOP現在のデスクトップの解像度でフルスクリーン
SDL_WINDOW_OPENGLOpenGLコンテキストで使用
SDL_WINDOW_SHOWN見えている
SDL_WINDOW_HIDDEN見えていない
SDL_WINDOW_BORDERLESS枠がない
SDL_WINDOW_RESIZABLE大きさを変えられる
SDL_WINDOW_MINIMIZED最小化されている
SDL_WINDOW_MAXIMIZED最大化されている
SDL_WINDOW_INPUT_GRABBED入力のフォーカスがグラブされている
SDL_WINDOW_INPUT_FOCUS入力のフォーカスがある
SDL_WINDOW_MOUSE_FOCUSマウスのフォーカスがある
SDL_WINDOW_FOREIGNSDL以外によって生成された
SDL_WINDOW_ALLOW_HIGHDPI高DPIモードで生成された (SDL2.0.1以上)

詳細

SDL_WINDOW_OPENGLフラグはOpenGLを使う準備をする. しかし, ウィンドウを生成した後はOpenGLの関数を呼ぶ前にSDL_GL_CreateContext()でOpenGLコンテキストを生成する必要がある.

関連項目(関数)

SDL_CreateWindow
SDL_GetWindowFlags
SDL_HideWindow
SDL_MaximizeWindow
SDL_MinimizeWindow
SDL_SetWindowFullscreen
SDL_SetWindowGrab
SDL_ShowWindow

SDL Wikiへのリンク

SDL_WindowFlags - SDL Wiki

SDL_DisplayMode

ディスプレイモードを含む構造体

フィールド

Uint32formatSDL_PixelFormatEnumの値の1つ. 詳細を参照すること
intw
inth高さ
intrefresh_rateリフレッシュレート(Hz), 特定できない場合は0
void*driverdataドライバ固有のデータ. 0で初期化する

関連項目(関数)

SDL_GetClosestDisplayMode
SDL_GetCurrentDisplayMode
SDL_GetDesktopDisplayMode
SDL_GetDisplayMode
SDL_GetNumDisplayModes
SDL_GetWindowDisplayMode
SDL_SetWindowDisplayMode

SDL Wikiへのリンク

SDL_DisplayMode - SDL Wiki

SDL_WindowEvent

ウィンドウの状態が変化した場合のイベントのデータを含む構造体

フィールド

Uint32typeSDL_WINDOWEVENT
Uint32timestampイベントのタイムスタンプ
Uint32windowID関連のあるウィンドウ
Uint8eventSDL_WindowEventID
Sint32data1イベントによって異なるデータ
Sint32data2イベントによって異なるデータ

詳細

SDL_WindowEventSDL_Event共用体のメンバの1つで, イベントのtypeがSDL_WINDOWEVENTの場合に使う. イベントのwindowフィールドを経由してアクセスする必要がある.

関連項目(列挙体)

SDL_EventType
SDL_WindowEventID

SDL Wikiへのリンク

SDL_WindowEvent - SDL Wiki

SDL_CreateWindow

位置, 大きさ, フラグを指定してウィンドウを生成する

構文

SDL_Window* SDL_CreateWindow(const char* title, int x, int y, int w, int h, Uint32 flags)

引数

titleUTF-8でコード化されたウィンドウのタイトル
xウィンドウのX座標, SDL_WINDOWPOS_CENTERED または SDL_WINDOWPOS_UNDEFINED
yウィンドウのY座標, SDL_WINDOWPOS_CENTERED または SDL_WINDOWPOS_UNDEFINED
wウィンドウの幅
hウィンドウの高さ
flags0 または 1つ以上のSDL_WindowFlagsの論理和

戻り値

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

関連項目(関数)

SDL_DestroyWindow

SDL Wikiへのリンク

SDL_CreateWindow - SDL Wiki

SDL_CreateWindowAndRenderer

ウィンドウとデフォルトのレンダラを生成する

構文

int SDL_CreateWindowAndRenderer(int width, int height, Uint32 window_flags, SDL_Window** window, SDL_Renderer** renderer)

引数

widthウィンドウの幅
heightウィンドウの高さ
window_flagsウィンドウを生成するときに使われるフラグ (SDL_CreateWindowを参照すること)
window生成されたウィンドウのポインタ, 異常のときはNULL
renderer生成されたレンダラのポインタ, 異常のときはNULL

戻り値

正常のとき0, 異常のとき-1を戻す. そのときSDL_GetError()を呼んで詳細を知ることができる.

関連項目(関数)

SDL_CreateWindow
SDL_CreateRenderer

SDL Wikiへのリンク

SDL_CreateWindowAndRenderer - SDL Wiki

SDL_CreateWindowFrom

既にあるネイティブのウィンドウからSDLのウィンドウを生成する

構文

SDL_Window* SDL_CreateWindowFrom(const void* data)

引数

dataドライバに依存したウィンドウ生成のためのデータ. 通常はvoid*キャストしたネイティブのウィンドウ

戻り値

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

関連項目(関数)

SDL_DestroyWindow

SDL Wikiへのリンク

SDL_CreateWindowFrom - SDL Wiki

SDL_DestroyWindow

ウィンドウを破棄する

構文

void SDL_DestroyWindow(SDL_Window* window)

引数

window破棄するウィンドウ

関連項目(関数)

SDL_CreateWindow
SDL_CreateWindowFrom

SDL Wikiへのリンク

SDL_DestroyWindow - SDL Wiki

SDL_DisableScreenSaver

スクリーンセーバーで画面が切り替わることを防ぐ

構文

void SDL_DisableScreenSaver(void)

詳細

スクリーンセーバーを無効にしても, SDLが終了すれば自動的に再び有効になる.

関連項目(関数)

SDL_EnableScreenSaver
SDL_IsScreenSaverEnabled

SDL Wikiへのリンク

SDL_DisableScreenSaver - SDL Wiki

SDL_EnableScreenSaver

スクリーンセーバーで画面が切り替わることを認める

構文

void SDL_EnableScreenSaver(void)

関連項目(関数)

SDL_DisableScreenSaver
SDL_IsScreenSaverEnabled

SDL Wikiへのリンク

SDL_EnableScreenSaver - SDL Wiki