目次 - SDL 3.0 API(機能別) - ピクセル形式と変換
ピクセル形式と変換
概要
SDLはピクセル操作の機能を提供している.
これらの機能は主にこのビットは何を表しているか等のピクセル形式を扱う.
ピクセルを赤, 緑, 青, さらにα値(透明度)の組み合わせとしたいだけならば非常に簡単で, 多くの場合はこれで充分である.
しかし, 実際のピクセルの定義はより複雑である:
ピクセルは特定の色空間で表される.
色空間は表色系で異なる.
SDLは2つの表色系, RGBとYCbCr(SDLではYUVとも呼ばれる)を認識する.
RGB系には赤, 緑, 青の要素があり, これらを合わせて画面上の色とする.
https://ja.wikipedia.org/wiki/RGB
YCbCr系は色を輝度と赤・青彩度のオフセット値として表す.
この表色系は人間の目は色よりも明るさに対して敏感であることを利用している.
通常, CbとCrは輝度よりも低い分解能として圧縮されている.
https://ja.wikipedia.org/wiki/YUV
色情報がYCbCrで圧縮されている場合, ピクセルのYには完全な分解能があり, CrとCbはYブロックの色情報の平均値で表される.
彩度位置は色情報のピクセル上のブロック位置を決める.
色範囲はピクセルをディスプレイ上の色に変換する場合に, どの程度ピクセルを使用するかを決める.
完全な色範囲を使用した場合, ピクセルのビット数が表せる範囲の全体が有効になる.
狭めた色範囲を使用した場合, 歴史的な理由で, ピクセルは色を表すために数値の一部のみを使用する.
原色と白色点は, 標準XYZ色空間に対する色空間における色を定義する.
https://ja.wikipedia.org/wiki/CIE_1931_色空間
伝送特性, または光電伝達関数(OETF)は, 色を線形空間から非線形空間の出力信号に数学的に変換する方法である.
https://ja.wikipedia.org/wiki/Rec._709#伝達特性
行列係数はYCbCr表色系とRGB表色系の変換に使用される.
関数
- SDL_CreatePalette - 色の数を指定してパレットを生成する
- SDL_DestroyPalette - SDL_CreatePalette()で生成したパレットを解放する
- SDL_GetMasksForPixelFormat - ピクセル形式からビット深度とRGBAマスクを得る
- SDL_GetPixelFormatDetails - ピクセル形式と一致するSDL_PixelFormatDetailsを生成する
- SDL_GetPixelFormatForMasks - ビット深度とRGBAマスクからピクセル形式を得る
- SDL_GetPixelFormatName - ピクセル形式の人間が読める名前を得る
- SDL_GetRGB - 指定のピクセルのRGB値を得る
- SDL_GetRGBA - 指定のピクセルのRGBA値を得る
- SDL_MapRGB - RGBの3つの値から指定のピクセル形式の不透明なピクセル値を求める
- SDL_MapRGBA - RGBAの4つの値から指定のピクセル形式のピクセル値を求める
- SDL_MapSurfaceRGB - RGBの値からサーフェイスの不透明なピクセルの値を求める
- SDL_MapSurfaceRGBA - RGBAの値からサーフェイスの透過ピクセルの値を求める
- SDL_SetPaletteColors - 範囲を指定してパレットの色を設定する
構造体
- SDL_Color - 色をRGBA要素で表す構造体
- SDL_FColor - SDL_PIXELFORMAT_RGBA128_FLOAT形式の浮動小数点の値を並べた色として解釈させることができる構造体
- SDL_Palette - パレットを表す一組のインデックス付きの色の構造体
- SDL_PixelFormatDetails - ピクセル形式の詳細を表す構造体
列挙体
- SDL_ArrayOrder - 要素配列の順序の列挙体
- SDL_BitmapOrder - ビットマップのピクセル順の列挙体
- SDL_ChromaLocation - 色空間情報のクロマサンプリングの位置の列挙体
- SDL_ColorPrimaries - 色空間情報のcolor primaries(原色)の列挙体
- SDL_ColorRange - 色空間情報の色の範囲の列挙体
- SDL_Colorspace - 色空間情報の列挙体
- SDL_ColorType - 色空間情報の種類の列挙体
- SDL_MatrixCoefficients - 色空間情報のmatrix coefficients(行列の係数)の列挙体
- SDL_PackedLayout - パックされた(整数に詰め込まれた)色要素の配置の列挙体
- SDL_PackedOrder - パックされた(整数に詰め込まれた)色要素の順序の列挙体
- SDL_PixelFormat - ピクセル形式の列挙体
- SDL_PixelType - ピクセルの種類の列挙体
- SDL_TransferCharacteristics - 色空間情報のtransfer characteristics(伝達特性)の列挙体
マクロ
- SDL_ALPHA_OPAQUE - 完全に不透明なα値の8ビット整数のマクロ
- SDL_ALPHA_OPAQUE_FLOAT - 完全に不透明なα値の浮動小数点数値のマクロ
- SDL_ALPHA_TRANSPARENT - 完全に透明なα値の8ビット整数のマクロ
- SDL_ALPHA_TRANSPARENT_FLOAT - 完全に透明なα値の浮動小数点数値のマクロ
- SDL_BITSPERPIXEL - ピクセル形式のピクセル当たりのビット数を求めるマクロ
- SDL_BYTESPERPIXEL - ピクセル形式のピクセル当たりのバイト数を求めるマクロ
- SDL_COLORSPACECHROMA - 色空間情報からクロマサンプリングの位置を得るマクロ
- SDL_COLORSPACEMATRIX - 色空間情報からmatrix coefficients(行列の係数)を得る
- SDL_COLORSPACEPRIMARIES - 色空間情報からcolor primaries(原色)を得るマクロ
- SDL_COLORSPACERANGE - 色空間情報から色の範囲を得るマクロ
- SDL_COLORSPACETRANSFER - 色空間情報からtransfer characteristics(伝達特性)を得るマクロ
- SDL_COLORSPACETYPE - 色空間情報から色空間の種類を得るマクロ
- SDL_DEFINE_COLORSPACE - カスタムされた色空間情報を定義するマクロ
- SDL_DEFINE_PIXELFORMAT - カスタムされたFourCC以外のピクセル形式を定義するマクロ
- SDL_DEFINE_PIXELFOURCC - カスタムされたFourCCピクセル形式を定義するマクロ
- SDL_ISCOLORSPACE_FULL_RANGE - 色空間情報の色範囲が全ての範囲かをチェックするマクロ
- SDL_ISCOLORSPACE_LIMITED_RANGE - 色空間情報の色範囲が制限された範囲かをチェックするマクロ
- SDL_ISCOLORSPACE_MATRIX_BT2020_NCL - 色空間情報の行列の係数がBT2020_NCLかをチェックするマクロ
- SDL_ISCOLORSPACE_MATRIX_BT601 - 色空間情報の行列の係数がBT601(またはBT470BG)かをチェックするマクロ
- SDL_ISCOLORSPACE_MATRIX_BT709 - 色空間情報の行列の係数がBT709かをチェックするマクロ
- SDL_ISPIXELFORMAT_10BIT - ピクセル形式が10ビット形式かをチェックするマクロ
- SDL_ISPIXELFORMAT_ALPHA - ピクセル形式にαチャネルがあるかをチェックするマクロ
- SDL_ISPIXELFORMAT_ARRAY - ピクセル形式が配列形式かをチェックするマクロ
- SDL_ISPIXELFORMAT_FLOAT - ピクセル形式が浮動小数点形式かをチェックするマクロ
- SDL_ISPIXELFORMAT_FOURCC - ピクセル形式がFourCC形式かをチェックするマクロ
- SDL_ISPIXELFORMAT_INDEXED - ピクセル形式がインデックス形式かをチェックするマクロ
- SDL_ISPIXELFORMAT_PACKED - ピクセル形式がパックされた(数値に詰め込まれた)形式かをチェックするマクロ
- SDL_PIXELFLAG - ピクセル形式からフラグを得るマクロ
- SDL_PIXELLAYOUT - ピクセル形式からパックされた(整数に詰め込まれた)色要素の配置を得るマクロ
- SDL_PIXELORDER - ピクセル形式から色要素の順序を得るマクロ
- SDL_PIXELTYPE - ピクセル形式からピクセルの種類を得るマクロ
SDL Wikiへのリンク
SDL3/CategoryPixels - SDL Wiki