| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Текст в OpenGl |
| Автор: Vizor 12.3.2006, 17:34 |
| Помогите пожалуйста вывести русский текст с использованием UNICODE. Желательно исходный код. |
| Автор: DigitalDummy 15.4.2006, 06:37 |
А что именно хотите узнать?
|
| Автор: Andreyexe 22.4.2006, 20:43 | ||
Можна-можна здесь посмотри www.mirgames.ru |
| Автор: DigitalDummy 2.5.2006, 22:19 | ||||||
Надеюсь, Вы не против, если для ответа я приведу исходный код, который Вы написали мне в личном сообщении...
Что у Вас в нём не верно? Главная ошибка в том, что текст в формате Unicode отличается от текста формата ANSI тем, что имеет размер символа WORD (два байта), а не один! То есть, вариантов символов в Unicode тексте намного больше, чем 256! При этом, для вывода текста в OpenGL Вы создаёте набор только из 256 символов с помощью функции wglUseFontOutlines которого явно не хватит для того, чтобы отобразить все Unicode символы! Именно поэтому символы отображаются неправильно. Если Вам нужно использовать все возможные Unicode символы, то и создавать набор надо в количестве 65536 символов. Но, я бы не сказал, что это хороший выход. По-моему, для вывода текста лучше всего создавать только те символы, которые будут непосредственно использоваться вашей программой. Ну ладно... Раз уж Вы пошли таким путём, то самое быстрое решение для Вас, как мне кажется, таково: Во-первых, добавьте в свой код упращенный вариант функции для перевода Unicode-символа в ANSI-символ:
А в Вашем коде для вывода текста надо исправить функцию:
Кстати, я никогда не пользовался функцией glutBitmapCharacter, поэтому не знаю сможет ли она правильно вывести на экран char символ и, может быть, потребуется конверсия типа в параметре. Если же текст всё ещё будет выводиться с ошибкой, сообщите и я напишу Вам замену для функции glutBitmapCharacter не прибегая к GLUT функциям. |