Я начну с изображения:
На изображении выше представлен текст, выполненный двумя разными способами, оба использовали один и тот же тип шрифта — Arial, полужирный, размер 11.
Один внизу был создан в программе редактирования изображений, а второй вверху в моем приложении OpenGL. Чтобы быть более точным, используя FTExtrudeFont
из библиотеки FTGL:
font_ptr font(new FTExtrudeFont(filename.c_str()));
У меня вопрос, почему это так нарисовано? Я предполагаю, что причиной этого могут быть разные алгоритмы изменения размера, но если так, как я могу добиться этого более привлекательного шрифта (нижний) в моем приложении OpenGL?
РЕДАКТИРОВАТЬ:
Чтобы отобразить шрифт, я вызываю только одну функцию:
font->Render(text, // Text to be displayed
-1, // Line length, which by default is left as -1
pos); // Position in which to draw text
Это похоже на то, что будет вызвано выборкой текстур в OpenGL. Это происходит, когда текстура, которую вы рисуете (в данном случае шрифт), не совпадает с размером, на котором вы ее рисуете.
Простое решение: убедитесь, что размер текстуры соответствует области, нарисованной на экране. Не визуализируйте шрифт 14px в области 12px, но используйте шрифт 12px или область 14px.
В своем вопросе вы упоминаете, что ваш шрифт имеет размер 11. Я не знаю деталей библиотеки FTGL, но я предполагаю, что есть вызов, который сообщит вам наилучшие размеры для конкретной строки, которую вы можете нарисовать. Не используйте свою математику для их вычисления, используйте библиотеку. Пока вы правильно выбрали размеры, у вас не должно возникнуть проблемы.
Других решений пока нет …