Интересно, есть ли какая-либо графическая библиотека, которая поддерживает рендеринг субпикселей 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), и, наконец, некоторые дисплеи имеют совершенно разные компоновки пикселей.