2016-07-15 2 views
-2

Мое требование - отображать на экране строку любого языка.Как отображать символы любого языка на экране с помощью opengl

В настоящее время мы используем opengl для отображения английских символов. Эти же API не работают на других языках. Вместо символов на экране отображаются поля.

Может кто-нибудь помочь в понимании opengl и найти соответствующие API для отображения фрахтователей любого языка?

ответ

1

В настоящее время мы используем opengl для отображения английских символов.

Нет, вы не используете OpenGL. Откуда я знаю это? Поскольку OpenGL не выполняет рендеринг текста. Все это указывает на точки, линии и треугольники.

Что вы используете некоторая библиотека, которая умеет рисовать символы с точками, линиями и треугольниками, а затем использует OpenGL для выполнения этой работы. И конкретная библиотека, которую вы используете, по-видимому, не знает, как обращаться с символами вне набора символов ASCII.

Конечно, дело не только в этом. Кодировка имеет значение. Самые последние версии поддержки C++ Unicode в источниках программы (так что вы можете писать unicode в строковых литералах), но это не дает вам поддержку Unicode в вашей программе - это просто компилятор, который знает, как с этим бороться, но это знание не автоматически переходит в скомпилированную программу.

До сих пор существует только одна операционная система, в которой поддержка Unicode настолько глубоко укоренилась, что никакой дополнительной работы не требуется; на самом деле конкретный способ кодирования Unicode был изобретен для него, но, к сожалению, это одна из самых проектов OS ниши есть вокруг: Plan9

Помимо Unicode, есть также много других схем кодирования символов, все несовместимые друг с другом, каждый для конкретного вида письма. Это означает, что также невозможно смешивать символы из разных систем записи в кодировании текстов с такими локализованными наборами символов. Следовательно, была изобретена схема uni versal en cod.

Вы, скорее всего, работаете в Windows, Linux, BSD, Solaris или MacOS X. И во всех случаях выполнение работы с не-ASCII-символами означает дополнительную работу для вас, программиста. MacOS X, вероятно, является одной ОС с наименьшим барьером входа.

Так вот вопросы, которые вы должны ответить для себя:

  • , что кодировка символов используется (надеюсь Unicode)?
  • В библиотеке текстового рендеринга используются коды поддержки кодов в этой кодировке?
  • Имеет ли библиотека текстового рендеринга механизм компоновки (вещь, которая позиционирует символы), или это необходимо предоставить дополнительно?

Среди существующих средств визуализации текста, которые могут рисовать OpenGL, в настоящее время Freetype-GL является наиболее способным; он имеет поддержку для Юникода

https://github.com/rougier/freetype-gl

Смежные вопросы