MGL::Render各種定義#

概要#

MGL::Renderで定義されている、MGLの描画関連の処理が共通で使用する宣言・定義です。

#

種類

名前

内容

RendererType

レンダラの種類を表すための型

列挙型

PixelFormat

ピクセルフォーマットの列挙型

列挙型

SamplerType

サンプラーの列挙型

列挙型

BlendMode

ブレンドモードの列挙型

関数・定数式#

種類

名前

内容

定数式

MakeRendererType

レンダラ判別用の値を作るための定数式

定数式

GetPixelPerBytes

ピクセルフォーマットのサイズを取得するための定数式


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]]属性を付与

関連#