LoginSignup
1
0

More than 3 years have passed since last update.

新機能SDFフォントを使ってみる

Last updated at Posted at 2020-03-04

OpenSiv3D 0.4.2 の新機能、SDFフォントの使用

拡大縮小しても文字がシャープなままなので、それは有効活用できる。

カメラ機能での拡大縮小文字で動作確認

実行結果

image.png

操作して拡大表示

カメラ機能で、マウスのホイール拡大して、右ドラッグで位置調整で、SDFフォントと通常フォントを縦に並べて見てみる
上2行がSDFフォント、ぼやけているのが通常フォント SDFフォントは拡大してもシャープなまま
image.png

ソースコード

# include <Siv3D.hpp> // OpenSiv3D v0.4.2

void Main()
{
    Font font(120);
    // ウィンドウ設定
    Window::Resize(1280, 720);
    Scene::Resize(1280, 720);
    System::Update();
    // グリフごとの Distance field のサイズ
    const int32 distanceFieldSize = 60;

    // SDFFont
    const SDFFont sdfFont(distanceFieldSize, Typeface::Bold);

    // 2D カメラ 比率1倍、すなわちピクセルと同じ座標系にする
    Camera2D camera(1);
    const String text = U"いろはにほへとちりぬるを";

    while (System::Update())
    {
        // 2D カメラを更新
        camera.update();
        {
            // 2D カメラの設定から Transformer2D を作成・適用
            const auto t = camera.createTransformer();

            // SDF パラメータの設定
            Graphics2D::SetSDFParameters(sdfFont.pixelRange());
 //           sdfFont(text).draw(40, Vec2(20, 20));
            sdfFont(text).draw(80, Vec2(20, 80));
            sdfFont(text).draw(120, Vec2(20, 180));

            // SDF パラメータの設定、太らせを 0.2 に
            Graphics2D::SetSDFParameters(sdfFont.pixelRange(), 0.2);
            sdfFont(text).draw(120, Vec2(20, 320), Palette::Black);
            // SDF パラメータの設定、太らせを 0.0 に
            Graphics2D::SetSDFParameters(sdfFont.pixelRange(), 0.0);
            sdfFont(text).draw(120, Vec2(20, 320));

            font(text).draw(0,500);
        }
        // 2D カメラ操作の UI を表示
        camera.draw(Palette::Orange);
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0