Как улучшить производительность DirectWrite при рендеринге большого количества текста? - PullRequest
1 голос
/ 17 июня 2019

Я работаю над приложением, которое отображает много текста (~ 350 строк по ~ 100 символов в строке, возможно, каждый кадр). Я считаю, что DirectWrite занимает слишком много времени, чтобы разметить этот текст, и частота кадров падает до 8-10 кадров в секунду.

Я уже нарезал текст на мелкие фрагменты. В своих экспериментах я обнаружил, что, разбивая текст, я могу значительно ускорить процесс верстки, но этого недостаточно, чтобы скорость была удовлетворительной. В предыдущей реализации я мог добиться гораздо лучшей (20-30 FPS) производительности, используя FreeType и OpenGL и только с учетом кернинга между символами. Я чувствую, что DirectWrite работает медленно, потому что использует слишком много функций шрифтов: мне не нужна поддержка двунаправленного текста; все функции, которые меня действительно волнуют, - это относительное позиционирование и лигатуры, и я хочу также поддерживать резервный шрифт. Есть ли способ отключить ненужные функции? Если нет, то как мне реализовать эти функции самостоятельно?

...