OpenSiv3D 0.4.2 の新機能、SDFフォントの使用
拡大縮小しても文字がシャープなままなので、それは有効活用できる。
カメラ機能での拡大縮小文字で動作確認
実行結果
操作して拡大表示
カメラ機能で、マウスのホイールで拡大して、右ドラッグで位置調整で、SDFフォントと通常フォントを縦に並べて見てみる
上2行がSDFフォント、ぼやけているのが通常フォント SDFフォントは拡大してもシャープなまま
ソースコード
# 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);
}
}