LINUX.ORG.RU

Хочу кроссплатформерную 2d графику с поддержкой шрифтов на С

 , , , ,


2

4

Для крестов всё понятно, подключаешь Skia и спокойно кодишь. А если ограничен сями, как быть? По сути, можно запилить собственный велосипед. Тогда на офтопике всё просто, подключаешь Direct2D и спокойно кодишь. Но как быть с Ubuntu и Android? Через OpenGL что ли велосипедить вывод шрифтов? Или какие высокоуровневые либы есть?

UPD: Для Android нашел вот такую табличку https://stackoverflow.com/questions/22170228/native-graphics-in-android-ndk-opengles-vs-native-window-api

UPD: Пока оптимально Cairo. Под офтопик бекенд на Direct2D, под GTK и Android - OpenGL. Осталось разобраться с iOS и macOS. Возможно вот так https://github.com/jpbruyere/vkvg

★★★★★

Последнее исправление: foror (всего исправлений: 4)

К слову о cairo - он не умеет текст. А для GUI это одна из основных вещей. Для текста придётся использовать harfbuzz, а он на C++. Баста.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Но с таким подходом

В смысле? С каким подходом?

foror ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Для текста придётся использовать harfbuzz, а он на C++. Баста.

А вы, что хотели использовать для своего движка на ржавом? Или в ржавый поддержку крестов завезли?

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

У harfbuzz только реализация на C++. Наружу торчит C-API.

Не только планировал, но и вполне использую harfbuzz в своих проектах.

Вот сходу нашел на гитхабе https://github.com/memononen/fontstash по ключевику text shaping

Это ни разу не шейпер, а банальный генератор атласа шрифта.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

У harfbuzz только реализация на C++. Наружу торчит C-API.

Хм, может я тогда смогу его к GraalVM Native Image подключить? Может на выходных смогу Hello World сделать.

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от OpenMind

OGRE+MyGUI

Мне здесь предлагали уже sdl, но оно слишком жирное. Хотя конечно тоже вариант, если с Cairo не выйдет.

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

Для текста pango (который использует freetype (C) и harfbuzz) с cairo backend. (В последней серии релизов pango выпилили freetype.)

gag ★★★★★
()
Ответ на: комментарий от EXL

Или уже нельзя?

Согласно гномовцам нельзя, если нужны самые новомодные фичи из шрифтов. А так - почему бы и нет.

gag ★★★★★
()
Последнее исправление: gag (всего исправлений: 1)
Ответ на: комментарий от menangen

Ты бы лучше свою прыть на Гитхаб проявлял, а не здесь 😀

Зачем? Меряться пиписьками с хипстерами, которые ставят раунды на сделать 100500 сайтов за год или что у них там сейчас в трендах?

Я и так всё пилю один, очень много рефакторю, а иногда чуть ли не полностью переделываю. Тратить время на коммиты и пояснения это потеря времени. Как получится полезный проект, который можно показать миру, тогда и выложу.

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от EXL

Они совершенно разные задачи выполняют, вообще-то.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Но использовали ли они эти возможности в pango, вот что важно. Сейчас глянул, похоже, глифы складываются для cairo, который уже достаёт outline. Учитывая, что он использует freetype, получается как-то странно. pango перестал открывать шрифты, не поддерживающиеся в harfbuzz, хотя потом отрисовку поручает cairo, который использует всё тот же freetype.

gag ★★★★★
()
Ответ на: комментарий от RazrFalcon

А что не так с ASCII? Да и можно что угодно юзать внутри кроме mygui, там же целый список. И главное будет работать везде одинаково и без вопросов. Вон ТС понравилось. Хотя да, жирноватый функционал для такой задачи.

OpenMind ★★★★
()
Ответ на: комментарий от peregrine

Или хочется более высокоуровневого?

Я не спец в этой области, но смотрю на GTK, Chrome, Firefox и т.д. они все работают через высокоуровневые либы Cairo или Skia.

foror ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Самые жырные и тормозные поделия перечислил, кстати.

Что анон посоветует тогда глянуть?

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

В целом легко. Главное биндинги написать.

pathfinder странная штука. Я пока слабо понимаю что и как он делает. Нужно подождать релиза.

RazrFalcon ★★★★★
()
Ответ на: комментарий от foror

очень много рефакторю, а иногда чуть ли не полностью переделываю.

Тратить время на коммиты и пояснения это потеря времени.

/0

Тебе никогда в процессе очередного рефакторинга не приходило в голову «а как же оно раньше работало»? Как ни странно, главный (и иногда единственный) человек, которому нужны коммиты и пояснения — это основной автор проекта.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Какое прекрасное и изысканное пояснение. Я просто почувствовал его философскую глубину.

OpenMind ★★★★
()
Ответ на: комментарий от hobbit

Тебе никогда в процессе очередного рефакторинга не приходило в голову «а как же оно раньше работало»?

Нет. Держу основные идеи в голове, что не помещается записываю на электронную читалку. Плюс джава код довольно простой, его можно быстро читать и рефакторить.

foror ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Нужно подождать релиза.

Оно сейчас хоть что-то может? Там смотрю превью релизы даже есть. Мне то без разницы, главное что бы с чего начать можно было.

Главное биндинги написать.

Может какие генераторы есть?

foror ★★★★★
() автор топика
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Оно сейчас хоть что-то может?

Что вы подразумеваете под «что-то»? Это 2d либа, которая использует GPU вместо CPU.

Может какие генераторы есть?

Есть, но всё равно нужна ручная работа.

RazrFalcon ★★★★★
()
Ответ на: комментарий от foror

Держу основные идеи в голове, что не помещается записываю на электронную читалку

Версии кода не фиксируешь? Или хотя бы делаешь архивы по датам?

А не бывает такого, что ты внезапно обнаруживаешь, что что-то поломалось, и надо определить, когда и в каком куске кода оно поломалось, и электронная читалка ничего не подсказывает?

VCS (даже старенькая SVN) такое обеспечивает элементарно.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Версии кода не фиксируешь? Или хотя бы делаешь архивы по датам?

Делаю бекапы в двух местах.

А не бывает такого, что ты внезапно обнаруживаешь, что что-то поломалось,

Не бывает. Во-первых, проекты пишутся с нуля и большая часть из них это исследование новых горизонтов. Поэтому бывает даже ситуации, когда код просто выкидывается даже не будучи запущенным.

Да и я могу писать порядка 200 Кб кода, в течении нескольких месяцев, ни разу его не запустив. Затем с первого раза компилирую (слава джаве и современным IDE) и прогоняю свои юзкейсы, где-то поправляю логические ошибки. Тесты естественно не пишу, ибо см. выше.

Вообще, всё идёт к тому, что я готовлю легковесную альтернативу инфраструктуре Spring-а. А если еще запилю задуманное в этом топике, то и альтернативу инфраструктуре Qt.

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

проекты пишутся с нуля и большая часть из них это исследование новых горизонтов

Ну если ты раз в полгода выкидываешь всё написанное в корзину — то да, VCS не нужна. :)

Но мне кажется, что весь сколько-нибудь годный опенсорс (да и не только опенсорс) работает по несколько другой схеме.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от foror

Вообще, всё идёт к тому, что я готовлю легковесную альтернативу инфраструктуре Spring-а. А если еще запилю задуманное в этом топике, то и альтернативу инфраструктуре Qt.

Open source?
Не хочу вас «поддеть», но знаете ли, «все мы люди и нам свойственно ош-ться».
А потому, для чтобы ваш API можно было использовать нужно его еще лет пять «проверять в бою».

anonymous
()
Ответ на: комментарий от RazrFalcon

Игоря используют гпу для 2д и 3д уже пару десятилетий, а для всяких «либ» это прям отличительная черта. Какое позорище и аутизм.

anonymous
()
Ответ на: комментарий от anonymous

Open source

Сейчас всё еще в разработке, а так будет опенсорц.

чтобы ваш API можно было использовать нужно его еще лет пять «проверять в бою».

Конечно оно не решит задачи всех на этом шарике, но пилится под мои задачи, так что изначально проверяется в бою.

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

Что же я буду за ЛОР-овец если вам не нагрублю, язвительно потроллю, …

«Он сказал поехали».

но пилится под мои задачи, так что изначально проверяется в бою.

ИМХНО начало разработки должно быть именно таким, а затем нужно делиться с другими /на счет нужно ли продавать сложный вопрос/.

Хоть вас и «учу», а вот думаю, что много «но» из-за которых бывает и не нужно публиковать исходный код.
А может быть нужно всегда /дело не в деньгах и большом ЧСВ/?

Если причина ЧСВ, то весьма печально.

anonymous
()
Ответ на: комментарий от anonymous

Игоря используют гпу для 2д и 3д уже пару десятилетий, а для всяких «либ» это прям отличительная черта. Какое позорище и аутизм.

Всякие либы должны работать там, где нет GPU. Именно поэтому в том же Qt 5 (QtWidgets) и GTK 3 программная отрисовка мощностями CPU.

EXL ★★★★★
()
Ответ на: комментарий от EXL

GPU сейчас везде, думаю проблема вот в этом https://github.com/servo/pathfinder/wiki/GPU-driver-compatibility Куча GPU работают через задницу, там наверное ситуация еще хуже, чем была с браузерами. А софт это не игори, здесь нужно чтобы всё стабильно работало и на любой табуретке.

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

GPU сейчас везде

А потом удивляются почему в VirtualBox у одних Windows тормозит и они делают заявляния вроде Windows жирная непоровотливая блоатварь, а у других Gnome/KDE тормозит(QML/Clutter) так же из-за LLVMPipe вместо GPU

На настоящем железе при том обе операционки работают хорошо…

fsb4000 ★★★★★
()
Ответ на: комментарий от RazrFalcon

Как он может быть нормальным если у нескольких людей по ссылке артефакты, даже на встройках от интела? Я еще понимаю с игорями, а с софтом люди не поймут, сейчас всё таки 2020 на подходе, а не начало нулевых.

foror ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.