|
0 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 40
|
|
Какими способами лучше выводить текст в OpenGL?13.10.2012, 11:58. Показов 15780. Ответов 24
Метки нет (Все метки)
Здравствуйте,хотелось бы узнать Ваше мнение по поводу вывода текста на экран приложения OpenGL. Насколько я понял возможны 2 способа вывода:
1. С помощью самого OpenGL (пример тут:http://pmg.org.ru/nehe/nehe13.htm) 2. С помощью MFC (точно не уверен в таком способе) Посоветуйте пожалусто начинающему,какой способ стоит использовать,если таковые вообще являются правильными?
0
|
|
| 13.10.2012, 11:58 | |
|
Ответы с готовыми решениями:
24
Какими способами можно вылечить пендинги? Какими способами можно создать Луч Wi-Fi!? Какими способами можно нарисовать таблицу в консоли? |
|
angstrom
|
|
| 13.10.2012, 13:22 | |
|
На сайте hehe можно прочитать про два основных способа, системный шрифт и битмапы. У каждого есть свои преимущества и недостатки. Первый можно масштабировать, но невозможно добиться качественного отображения, второй даёт отличную картинку, но не масштабируется. Выбор только за вами, где и для чего нужно вывести текст.
|
|
|
angstrom
|
||||||
| 13.10.2012, 15:28 | ||||||
|
Под системным я имел в виду шрифты ОС
|
||||||
|
0 / 0 / 1
Регистрация: 08.10.2012
Сообщений: 40
|
|
| 13.10.2012, 20:49 [ТС] | |
|
Ну так а с помощью MFC есть вариант выводить сообщения в окно приложения OpenGL?
0
|
|
|
|
|||
| 14.10.2012, 13:28 | |||
|
По сути и там и там отрисовывается заранее подготовленная картинка, но в случае с текстурного для хранения используется текстурная память(и соответственно становятся доступны все ф-ии текстуры, а также задаётся глубина цвета), а для растра - даже не знаю... по-моему там даже другая ветка конвейера задействуется. Для отрисовки растара идёт вызов glBitmap, которая только и может выводить картинки с глубиной цвета 1 бит. То есть качественно вывести шрифт не получится. Хотя последнее надо уточнить...
0
|
|||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||
| 14.10.2012, 13:40 | ||
|
100% есть еще способ кроме естественным путем масштабируемого но очень медленного вектора и достаточно быстрых но не масштабируемых растра и текстуры - например autocad немыслимым способом умудряется отрисовывать колоссальные объемы текста без потери производительности - программа на gl рисуя массив векторного текста 100 на 100 (даже шрифтом txt на самом грубом сглаживании и отрисовке тольк контуров) просто нереально троит. пытался нарыть как же это сделано в autocad - не нашел. подозреваю что они как то рисуют на стандартной не dx канве поверх окна графического вывода или перед выводом формируют для всех отображаемых на чертеже масштабов символов соответствующие битмапы и рисуют растровый текст. хз.
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
||||||
| 14.10.2012, 14:33 | ||||||
0
|
||||||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 15.10.2012, 00:20 | |
|
lazybiz, "критикуя - предлагай" (с)
задача: вывод текста. на рисунке может быть текст разных размеров и шрифтов, под разными углами, отраженный в зеркале. если через вектор, то для каждого шрифта строится список, размер, угол и отражение выполняются штатными средствами без потери качества. если через растр, то нужно, как я понял, заводить список еще и для каждого размера. причем с самим размером при использовании wglUseFontBitmaps у меня вышло не все так гладко - нужно задавать его в виде целого числа (как в текстовых редакторах). поэтому вычислить высоту текста в пространстве модели весьма сложно, а зумирование идет прыжками. с функцией GetGlyphOutline не работал - может там по другому. поправьте если, что не так. насколько операция получения списка сложна в плане вычислений по сравнению с рисованием я не знаю - если зумировать списки будут строится в больших количествах и кто победит - хз... привожу пример для вектора - тупняки с массивом текста 100 на 100 заметны (мягко сказано, в заголовке отображается время на построение кадра - у меня оно достигало 360 мс) невооруженным глазом не говоря уже о протестующем жужжании вентилятора ноутбука (панорамирование - нажатие колеса, зумирование - вращение колеса, задать другое количество элементов массива можно указав число в параметрах запуска программы). не могли бы вы показать код решающий вопрос с размером текста и привести аналогичный тест производительности для вашего пути (из выложенного снимка я если честно не очень понял как оно там)?
1
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
|
|
| 15.10.2012, 10:05 | |
|
lazybiz, про критику - это лишь пословица возникшая при громких словах "вопрос скорости, kids, меня не беспокоит", "увековечьте меня в золоте" и "бумагу не мараю". в чем метод, гуру? не пиши текст - покажи самокат.
0
|
|
|
81 / 40 / 22
Регистрация: 03.05.2013
Сообщений: 722
|
|
| 25.01.2015, 12:11 | |
|
castaway расскажите поподробнее о вашем способе, вывод текста на экран. У меня вообще пока не получилось, ни одного. Интересует 2d обычный текст, размер, цвет, позиция на экране. Больше ни чего не надо.
0
|
|
|
|
|
| 26.12.2019, 06:29 | |
|
0
|
|
| 26.12.2019, 06:29 | |
|
Помогаю со студенческими работами здесь
20
Какими способами можно реализовать перетаскивание окна?
Нужен совет!Какими способами можно соединить 2 подсети!
Какими способами можно получать отчеты с Windows Server 2008 r2 ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|