Интересно, есть ли какая-нибудь графическая библиотека, поддерживающая субпиксельный рендеринг RGB (например, ClearType) для общей графики, не только для текста. Это позволило бы практически утроить горизонтальное разрешение и разместить графику на позициях x третьего пикселя.
Хотя я думаю, что это было бы очень полезно, я не смог найти много информации об этом в Интернете, кроме следующего:
- Как работает рендеринг субпиксельных шрифтов (посередине есть несколько штриховых изображений)
- Субпиксельный рендеринг и изменение размера изображения (некоторые интересные мысли о применении субпиксельного рендеринга для изменения размера растровых изображений)
Есть ли какая-нибудь библиотека, которая реализует это, или есть ли попытки добавить что-то подобное, например, в библиотеку Cairo?
Обновлять:
Я имею в виду конкретно методы рендеринга, учитывающие, что современные ЖК-экраны используют субпиксели разных цветов. Чтобы сделать белую точку, вы устанавливаете для всех субпикселей значение «включено» или 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) 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), и, наконец, что некоторые дисплеи имеют совершенно другое расположение пикселей.