Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Шрифты из файла


Автор: Graf_h 5.3.2008, 10:14
Здравствуйте! Подскажите пожалуйста, как в опенЖЛ можно использовать шрифты из графического файла? Заранее спасибо.

Автор: baldina 5.3.2008, 15:51
из какого графического файла?

Автор: Graf_h 5.3.2008, 16:11
вот файл! и мне нужно чтобы текст отображался с помощью такого шрифта...

Автор: baldina 5.3.2008, 17:16
Нарежь его кусочками, по одному на букву.
Одна буква выводится в виде текстуры для прямоугольника нужного размера.
Создай display lists для каждой буквы с последовательными номерами.

Шрифт готов. Теперь (полагая, что списки созданы начиная с FONT_BASE) можно выводить текст:

Код

glListBase (FONT_BASE); 
char str[] = "Hello, world";
glCallLists (sizeof str, GL_UNSIGNED_BYTE, str); 


Шрифт, который ты показал, очень похож на системный. Может так будет проще?

Код

SelectObject (hdc, GetStockObject (SYSTEM_FONT)); 
wglUseFontBitmaps (hdc, 0, 255, FONT_BASE); 
...
glListBase (FONT_BASE); 
char str[] = "Hello, world";
glCallLists (sizeof str, GL_UNSIGNED_BYTE, str); 

Автор: Graf_h 5.3.2008, 17:46
в смысле нарезать? для каждой буквы отдельный файл?обьясните пожалуйста поподробнее... а то системные шрифты не охота использовать smile 

Автор: baldina 5.3.2008, 17:55
создай картинку для каждой буквы и используй её в качестве текстуры.

Автор: FIaR 9.3.2008, 14:07
? как это "картинка для каждой буквы"?

Просто загрузи свой шрифт как текстуру, и поиграйся с текстурнымы координатами. Т.Е. для каждой буквы твоего текста будеш менять UV.

Автор: Graf_h 10.3.2008, 13:41

FIaR Я также думал... но как сделать так чтобы фон был прозрачным, а сами буквы нет

Автор: FIaR 10.3.2008, 16:46
Уже и не помню, давно это было. Поищи по теме "Смешивание в OpenGL". Я уверен что найти будет не сложно. 

Или что то типа этого:

Код

  glEnable(GL_BLEND);
  glBlendFunc(GL_??, GL_??); // ?? -- параметры смешивания, можно посмотреть в gl.h

Автор: Graf_h 11.3.2008, 12:56
FIaR, то что нужно! наконецто разобрался!спасибо за помощь smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)