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

# 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_VISUAL | 1を設定するとハードウェアアクセラレーション, 0を設定すると強制的にソフトウェアレンダリングを使う. デフォルトは両方を許可する
SDL_GL_RETAINED_BACKING | 未使用 (廃止)
SDL_GL_CONTEXT_MAJOR_VERSION | OpenGLコンテキストのメジャーバージョン. 詳細を参照すること
SDL_GL_CONTEXT_MINOR_VERSION | OpenGLコンテキストのマイナーバージョン. 詳細を参照すること
SDL_GL_CONTEXT_FLAGS | 0個以上のSDL_GLcontextFlag列挙体の要素. デフォルトは0
SDL_GL_CONTEXT_PROFILE_MASK | OpenGLコンテキストの種類(Core, Compatibility, ES). SDL_GLprofile列挙体を参照すること. デフォルトは環境に依存する
SDL_GL_SHARE_WITH_CURRENT_CONTEXT | OpenGLコンテキストのシェア. デフォルトは0
SDL_GL_FRAMEBUFFER_SRGB_CAPABLE | sRGBの使用を要求する. デフォルトは0. (SDL 2.0.1以上)
SDL_GL_CONTEXT_RELEASE_BEHAVIOR | コンテキストをrelease behaviorに設定する. デフォルトは1 (SDL 2.0.4以上)
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_GL_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_VERSIONとSDL_GL_CONTEXT_MINOR_VERSIONも同じである. これら3つの属性は最初のウィンドウが生成される前に設定する必要がある. そして, 通常はSDL_GL_CONTEXT_PROFILE_MASKの値は, 以前の設定で生成したウィンドウを全ての閉じるまでは変更できない.

SDL_GL_CONTEXT_RELEASE_BEHAVIORにはSDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONEまたはSDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSHを設定できる.

## 関連項目(関数)

SDL_GL_CreateContext
SDL_GL_GetAttribute
SDL_GL_SetAttribute

## SDL Wikiへのリンク

SDL_GLattr - SDL Wiki