Текстовая надпись в x86sdlhostPorts.Rider.DrawString создаётся в три этапа:
1) Генерация растра с помощью SDL_TTF
2) Создание текстуры из растра.
3) Натягивание текстуры на прямоугольник.

Генерация растра и создание текстуры - самые тяжёлые операции. Было принято решение оптимизировать этап создания текстуры. Для этого однократно создаётся большая текстура (например, 512х512), а растр из SDL_TTF внедряется в неё как субтекстура с помощью glTexSubImage. Субтекстурирование гораздо быстрее (по моим замерам, в два раза), чем glTexImage, поэтому общий прирост производительности оказался значительным, примерно в 1.6 раза.

До оптимизации: время рендера кадра 0.0053 сек, строка в 30 символов рендерится 3000 раз\сек.
После оптимизации: время рендера кадра 0.0033 сек, строка в 30 символов рендерится 5000 раз\сек.

Скорость рендеринга текстовых документов возросла примерно в два раза. Но этого совершенно недостаточно для гладкой визуализации. Вообще, хорошо известно, что создание текстур "на лету" плохой путь. Поэтому надо готовить текстуры по возможности, заранее. Это сработает, потому что 99% времени рендеринга текст на экране не меняется.

Вопрос только в построении эффективного алгоритма кэширования. Входные данные - цепочка символов и объект шрифта Fonts.Font. Идентификатор текстуры надо связать с этими данными, а при рендеринге кадра искать готовую текстуру (или добавлять новую по необходимости).

Что тут можно придумать, подскажите?