不透明背景上的子像素光栅化

时间:2015-01-28 22:34:02

标签: c++ rendering blending subpixel

我正在研究亚像素光栅化器。输出将在不透明的位图上呈现。我到目前为止正确地将文本呈现为黑白(因为我基本上可以忽略位图的内容)。

问题在于混合。每个实际渲染的像素也会影响它的邻居强度等级,因为低通滤波技术(我使用5抽头冷杉 - 1 / 9,2 / 9,3 / 9等),另外还有要渲染的像素的alpha级别。然后必须将此结果字母混合到目标图像上,这是问题发生的地方......

必须将像素交互的结果加在一起以获得正确的亮度 - 并且α混合到目的地 - 但是如果我一次光栅化一个像素,我会松散'因此,进一步添加可能导致溢出。

这应该如何完成?我能想象的唯一解决方案是,为每种颜色渲染一个带有alpha通道的单独图像,然后是一些复杂的混合算法,最后将它混合到目的地..不知何故。

然而,除了lcd子像素渲染的基本概念和监视器像素的漂亮特写图像之外,我无法找到有关如何实际操作的任何资源。如果有人可以帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

今晚我醒了,不能再睡着了。 我无法让所有那些大脑能量浪费掉,并且在完全相同的问题上跌跌撞撞。

我提出了两种不同的解决方案,都是未经验证的。

  • 您必须使用3通道alpha蒙版,每个子像素对应一个,将每种颜色与其自己的alpha混合。
  • 如果您只渲染灰色/ BW字体(如果您在浅色背景颜色上绘制深色文本,则可以使用颜色通道作为alpha蒙版),再次单独应用每种颜色。在这种情况下,颜色值本身应被视为1。

希望这有点帮助,我用它填补了2小时失眠。

~Jan