MGL::Render 各種定義
Contents
MGL::Render各種定義#
概要#
MGL::Renderで定義されている、MGLの描画関連の処理が共通で使用する宣言・定義です。
型#
種類 |
名前 |
内容 |
---|---|---|
型 |
レンダラの種類を表すための型 |
|
列挙型 |
ピクセルフォーマットの列挙型 |
|
列挙型 |
サンプラーの列挙型 |
|
列挙型 |
ブレンドモードの列挙型 |
関数・定数式#
種類 |
名前 |
内容 |
---|---|---|
定数式 |
レンダラ判別用の値を作るための定数式 |
|
定数式 |
ピクセルフォーマットのサイズを取得するための定数式 |
RendererType#
レンダラの種類を表すための型
宣言#
namespace MGL::Render
{
enum class RendererType : uint32_t {};
}
説明#
レンダラの種類を表すための型です。
この型の値はMakeRendererTypeによって生成されます。主にレンダラの判別用に利用されますが、MGLの標準機能を利用する限りは参照する必要はありません。
バージョン情報#
- MGL 1.0.0
初回リリース
関連#
PixelFormat#
ピクセルフォーマット
宣言#
namespace MGL::Render
{
enum class PixelFormat : uint32_t
{
// 省略(下記参照)
};
}
説明#
主にテクスチャなどで扱う、ピクセルフォーマットを表す列挙型です。
注釈
全てのピクセルフォーマットを列挙しきれないため、MGLではひとまず使用頻度の高そうなもののみを選定して列挙しています。MGLが定義していないピクセルフォーマットであっても、レンダラが対応しているものであれば利用可能です。その場合はアプリケーション側からはUnknownとなります。
定義済みのピクセルフォーマットとその内容は次の通りです。
- Unknown
不明なピクセルフォーマットです。レンダラ側で使用するピクセルフォーマットに対応した定義がMGL側に存在しない場合はこの値を使用してください。
- RGBA8_UNorm
32bitのRGBAフォーマットです。赤8bit、緑8bit、青8bit、アルファ8bitの順に、正規化された符号なしの数値で表現されます。
- BGRA8_UNorm
32bitのBGRAフォーマットです。青8bit、緑8bit、赤8bit、アルファ8bitの順に、正規化された符号なしの数値で表現されます。
- B5G6R5_UNorm
16bitのBGRフォーマットです。青5bit、緑6bit、赤5bitの順に、正規化された符号なしの数値で表現されます。
- A1BGR5_UNorm
16bitのABGRフォーマットです。アルファ1bit、青5bit、緑5bit、赤5bitの順に、正規化された符号なしの数値で表現されます。
- BGR5A1_UNorm
16bitのBGRAフォーマットです。青5bit、緑5bit、赤5bit、アルファ1bitの順に、正規化された符号なしの数値で表現されます。
- ABGR4_UNorm
16bitのABGRフォーマットです。アルファ4bit、青4bit、緑4bit、赤4bitの順に、正規化された符号なしの数値で表現されます。
- BGRA4_UNorm
16bitのABGRフォーマットです。青4bit、緑4bit、赤4bit、アルファ4bitの順に、正規化された符号なしの数値で表現されます。
- A8_UNorm
8bitのアルファ値のみのフォーマットです。正規化された符号なしの数値で表現されます。
- Invalid
無効なピクセルフォーマットを表す値です。
バージョン情報#
- MGL 1.0.0
初回リリース
- MGL 1.1.13
型のサイズに
uint32_t
を指定無効なピクセルフォーマットを表現するための
Invalid
を追加
関連#
SamplerType#
サンプラーの列挙型
宣言#
namespace MGL::Render
{
enum class SamplerType : uint8_t
{
Invalid, //!< 無効
Nearest, //!< 最近傍補間
Linear, //!< 線形補間
};
}
説明#
スケーリングの補間処理に利用するサンプラーの種類を表す列挙型です。定義済みのサンプラータイプとその内容は次の通りです。
- Invalid
無効なサンプラータイプを表す値です。通常、この値は利用できません。
- Nearest
最近傍補間を表す値です。
- Linear
線形補間を表す値です。
バージョン情報#
- MGL 1.0.0
初回リリース
- MGL 1.1.13
型のサイズに
uint8_t
を指定
関連#
BlendMode#
ブレンドモードの列挙型
宣言#
namespace MGL::Render
{
enum class BlendMode : uint8_t
{
None, //!< なし
Alpha, //!< アルファブレンド
};
}
説明#
ブレンドモードを表す列挙型です。主にレンダリング時の色の合成方法の指定に利用します。
定義済みのブレンドモードは次の通りです。
- None
ブレンディングを行わないモードを表す値です。
- Alpha
乗算によるブレンディングを行うモードを表す値です。
バージョン情報#
- MGL 1.0.0
初回リリース
- MGL 1.1.13
型のサイズに
uint8_t
を指定
関連#
MakeRendererType#
レンダラ判別用の値を作るための定数式
宣言#
namespace MGL::Render
{
[[nodiscard]] constexpr RendererType MakeRendererType(const char *type) noexcept;
}
引数#
- const char *type
レンダラの種類を表す文字列
戻り値#
- RendererType
レンダラ判別用の値
説明#
レンダラ判別用の値を生成するための定数式です。引数で指定した文字列を元に、32bitの整数値を生成します。生成される値はMGL::Hash::FNV1aによって算出された32bitハッシュ値です。
通常はアプリケーション側からこの機能を利用する必要はありません。独自のレンダラを実装する際には、そのレンダラを表す値をこの定数を用いて定義する必要があります。独自レンダラの実装の詳細については2Dレンダラの作成(準備中)を参照してください。
現在、MGLの標準レンダラが利用している文字列とその値は次の通りです。
文字列 |
レンダラの種類 |
値 |
---|---|---|
MGL-Direct3D11 |
Direct3D11レンダラ(Windows用) |
0xF08449F5 |
MGL-Metal |
Metalレンダラ(macOS, iOS, tvOS用) |
0x5AFDB6F4 |
バージョン情報#
- MGL 1.0.0
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与
利用例#
// 2Dレンダラが利用しているレンダラの種類を取得
MGL::Render::Renderer2D renderer;
auto rendererType = renderer.GetRendererType();
// レンダラの種類を判別
// 定数式であり、コンパイル時に値に変換されるため、switchによる分岐が利用可能
switch (rendererType)
{
case MGL::Render::MakeRendererType("MGL-Direct3D11"):
print("MGLのDirect3D11レンダラを使用中\n");
break;
case MGL::Render::MakeRendererType("MGL-Metal"):
print("MGLのMetalレンダラを使用中\n");
break;
default:
print("不明なレンダラを使用中\n");
break;
}
関連#
GetPixelPerBytes#
ピクセルフォーマットのサイズを取得するための定数式
宣言#
namespace MGL::Render
{
[[nodiscard]] constexpr size_t GetPixelPerBytes(PixelFormat format) noexcept;
}
引数#
- PixelFormat format
ピクセルフォーマット
戻り値#
- size_t
1ピクセルあたりのバイト数
説明#
ピクセルのサイズを取得するための定数式です。ピクセルフォーマットから1ピクセルあたりのバイト数を取得します。
利用例#
// PixelFormat::RGBA8_UNormの1ピクセルあたりのサイズを取得
auto size = MGL::Render::GetPixelPerBytes(MGL::Render::PixelFormat::RGBA8_UNorm); // size = 4
バージョン情報#
- MGL 1.0.0
初回リリース
- MGL 1.1.13
関数の戻り値に
[[nodiscard]]
属性を付与