Yes I am talking about sub pixel rendering.
Basically you have two things to consider:
- in a way, because the RGB channels are next to each other, the actual resolution of the screen is 3 times as wide. So a simple approach for example would be to render a grayscale image using each channel as a pixel. This kind of works but is not really nice, because of the second point:
- secondly, the color perceived depends on the 3 channels, so for example, if you have a thin line that would be 1 third of a pixel, of you change let's say only the red channel, then it would appear as a red line, even though you wanted a white line. To avoid this, you need to distribue the value to the adjacent channels.
Examples (values from 0 to 9)
grayscale 0 0 9 0 0 0
RGB 0 3 3 3 0 0
color ---dark cyan-- ---dark red----
perceived ----dark gray----- -----black-----
you get some blurry effect though:
grayscale 0 0 0 9 9 9 0 0 0
RGB 0 0 3 6 9 6 3 0 0
color ---dark blue--- ---pale green-- ---dark red----
perceived --black-- ---pale orange/pale sky------ --black--
so probably you could get some mixed mechanism like:
grayscale 0 0 0 9 9 6 0 0 0
RGB gray 0 0 0 6 6 6 0 0 0
remainder 0 0 0 3 3 0 0 0 0
RGB remain 0 0 1 2 2 1 0 0 0
RGB 0 0 1 8 8 7 0 0 0
color --dkdkblue-- --cream--- ---black----
perceived --black-- ----lightsilver---- ---black----
for a colored image as input, then you would need do that 3 times, one for each channel.