Подпиксельная рендеринг RGB для графики? - программирование
Подтвердить что ты не робот

Подпиксельная рендеринг RGB для графики?

Интересно, есть ли какая-либо графическая библиотека, которая поддерживает рендеринг субпикселей RGB (например, ClearType) для общей графики, а не только для текста. Это позволило бы практически утроить разрешение по горизонтали и поместить графики на позиции третьего пикселя x.

Хотя я думаю, что это было бы очень полезно, я не мог найти много в Интернете об этом, кроме следующих:

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


Update:

Я имею в виду конкретно методы рендеринга, которые учитывают, что текущие экраны ЖК-дисплея используют субпиксели разных цветов. Чтобы сделать белую точку, вы установите все подпиксели на 'on' или 255. Белая линия будет несколько подпикселей друг над другом:

...RGB...
...RGB...
...RGB...
...RGB...
...RGB...
...111...

(где . - полностью черный субпиксель, а R, G или B - полностью освещенные красные, зеленые или синие субпикселы). Поскольку наши глаза не могут разрешить субпиксели, они смешиваются друг с другом, чтобы сделать белую линию. Я мог бы также сделать белую строку из следующего:

....GBR..
....GBR..
....GBR..
....GBR..
....GBR..
....111..

Обратите внимание, что он абсолютно острый, но расположен в x = 1 1/3 пикселя. Это невозможно с традиционными методами рендеринга, которые вместо этого рисуют слегка размытую белую линию. Здесь, например, R= 70% горит, R= 30% горит. Я не разработал математику, это только потому, что вы поняли:

...RGBrgb...
...RGBrgb...
...RGBrgb...
...RGBrgb...
...RGBrgb...
...777333...

Другим примером является наклон, который вы можете сделать: a) с полными пикселями, b) сглаживание или c) с субпиксельной рендерингом:

a)  RGB......  b)  RGB......  c)  RGB......
    RGB......      RGBrgb...      .GBR.....
    ...RGB...      rgbRGB...      ..BRG....
    ...RGB...      ...RGB...      ...RGB...
    ...RGB...      ...RGBrgb      ....GBR..
    ......RGB      ...rgbRGB      .....BRG.
    ......RGB      ......RGB      ......RGB

Опять же, обратите внимание, что это просто грубый пример, чтобы дать вам общую идею, но вы видите, что а) является неровным или псевдонимом, б) размытым, а в) настолько резким, насколько вы можете получить его на ЖК-дисплее.

Реальные реализации этого, для отображения шрифтов (ClearType в Windows и подпиксельной визуализации в FreeType), имеют более сложный алгоритм. Они учитывают, что отдельные субпикселы сливаются или блестят друг в друга, они сохраняют общую интенсивность цвета или энергию. Они также принимают во внимание, что интервал субпикселей не четный (расстояние между R и G, или G и B (в пикселе) может быть меньше, чем между B и R), и, наконец, некоторые дисплеи имеют совершенно разные компоновки пикселей.

4b9b3361

Ответ 1

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

Вот несколько возможных причин:

  • Microsoft имеет несколько патентов в технологии рендеринга субпикселей RGB. Я не знаю, применимы ли эти патенты только к растеризации шрифтов, но если нет, это, вероятно, очень хорошая причина, почему другие графические библиотеки не используют его.
  • Как указано в вопросе, субпиксельная рендеринг опирается на аппаратную реализацию. Он хорошо работает с дисплеями, которые составляют цвет, размещая бок о бок 3 цветные ячейки (например, ЖК-монитор). Для всех других типов дисплеев (плазма, проекторы, старый ЭЛТ) это не работает.
  • Подпиксельная рендеринг добавляет только горизонтальное разрешение. Это ограничение не является проблемой для растеризации шрифтов, так как часто горизонтально шрифт нуждается в большем разрешении (см. Жирный и курсивный символы и кернинг). При использовании "пользовательской" графики было бы странно иметь разное разрешение на каждой оси.
  • Подпиксельная рендеринг не работает с вращательным отображением. Например, мобильное устройство должно использовать как рендеринг субпикселей RGB, так и сглаживание.
  • Подпиксельный рендеринг работает только с собственным разрешением дисплея.
  • Похоже, что у цветных слепых есть проблемы с рендерингом субпикселей. Дополнительную информацию см. В этой статье .
  • Подпиксельная рендеринг работает очень хорошо с черным на белом или белом фоне на черном фоне. С другими backgound "renderer" должен знать цвет фона, чтобы настроить эффект субпикселя. Именно по этой причине Office 2013 прекратил использование ClearType.
  • Это более субъективно, но разница между субпиксельным рендерингом и сглаживанием очень тонкая. Недостатки и добавленная сложность рендеринга субпикселей могут не стоить того.

IMHO, будущее лучшей графики с более высокой плотностью пикселей, как дисплей сетчатки Apple.

Ответ 2

Кому-то удалось получить интересные результаты с помощью ImageMagick. Здесь раскрываются метод и результаты, а также интересное обсуждение: https://www.imagemagick.org/discourse-server/viewtopic.php?t=19120

Интересный предмет. Но остается точка: насколько полезной может быть техника, поскольку такой процесс принесет пользу немасштабированным изображениям на определенном типе дисплея?

Ответ 3

Кажется, что с AGG на antigrain.com это возможно, указав свой собственный конверсионный конвейер для сопоставления вывода с пикселями устройства. См. https://sourceforge.net/p/vector-agg/mailman/search/?q=LCD