Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как сделать меню директх11 где можно вывести текст со своим шрифтом и тд?

Бери DirectXTK — это самый нормальный и быстрый способ сделать менюху с собственным шрифтом в DX11 на голом WinAPI.


Делается буквально за вечер:


  1. Качаешь DirectXTK с гитхаба Microsoft (просто NuGet или собери сам)
  2. Генеришь шрифт через MakeSpriteFont.exeПример:MakeSpriteFont.exe "Consola.ttf" Consola.spritefont /FontSize:28 /Sharpness:0.6Получишь .spritefont и .dds текстуру.
  3. В коде:
  4. std::unique_ptr<SpriteBatch> sb;
    std::unique_ptr<SpriteFont> font;

    void InitUI()
    {
    sb = std::make_unique<SpriteBatch>(context.Get());
    font = std::make_unique<SpriteFont>(device.Get(), L"Consola.spritefont");
    }

    void DrawMenu()
    {
    sb->Begin();

    font->DrawString(sb.get(), L"► Новая игра", XMVectorSet(300, 200, 0, 0), selected == 0 ? Colors::Yellow : Colors::White);
    font->DrawString(sb.get(), L" Загрузить", XMVectorSet(300, 250, 0, 0), selected == 1 ? Colors::Yellow : Colors::White);
    font->DrawString(sb.get(), L" Настройки", XMVectorSet(300, 300, 0, 0), selected == 2 ? Colors::Yellow : Colors::White);
    font->DrawString(sb.get(), L" Выход", XMVectorSet(300, 350, 0, 0), selected == 3 ? Colors::Yellow : Colors::White);

    sb->End();
    }
  5. Всё. Никаких своих шейдеров, никаких ручных квадов на каждый символ. Шрифт любой, размер любой, антиалиасинг, тени — всё это делается одной строчкой через параметры DrawString (масштаб, поворот, цвет, тень и т.д.).


    Если хочешь совсем красиво — кидай ещё фон меню через sb->Draw(texture, позиция) и готово.


    90 % людей, кто делает меню/оверлеи на DX11 в 2025, сидят именно на этом DirectXTK. Работает как часы, весит мало, обновляется.
 
Назад
Сверху Снизу