Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vector graphics 图形的RGB亚像素渲染?_Vector Graphics_Subpixel - Fatal编程技术网

Vector graphics 图形的RGB亚像素渲染?

Vector graphics 图形的RGB亚像素渲染?,vector-graphics,subpixel,Vector Graphics,Subpixel,我想知道是否有任何图形库支持RGB亚像素渲染(如ClearType)用于一般图形,而不仅仅是文本。这将允许一个几乎三倍的水平分辨率,并将图形放在第三个像素x的位置 虽然我认为这会非常有用,但我在互联网上找不到太多关于它的信息,除了以下内容: ....GBR.. ....GBR.. ....GBR.. ....GBR.. ....GBR.. ....111.. (中间有一些线条图像) (关于将亚像素渲染应用于调整位图大小的一些有趣想法) 例如,有没有实现这一点的库,或者有没有努力将类似的东西

我想知道是否有任何图形库支持RGB亚像素渲染(如ClearType)用于一般图形,而不仅仅是文本。这将允许一个几乎三倍的水平分辨率,并将图形放在第三个像素x的位置

虽然我认为这会非常有用,但我在互联网上找不到太多关于它的信息,除了以下内容:

....GBR..
....GBR..
....GBR..
....GBR..
....GBR..
....111..
  • (中间有一些线条图像)
  • (关于将亚像素渲染应用于调整位图大小的一些有趣想法)
例如,有没有实现这一点的库,或者有没有努力将类似的东西引入Cairo库


更新:

我特别指的是渲染技术,它考虑到当前LCD屏幕使用不同颜色的子像素。要生成白点,请将所有子像素设置为“开”或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
再一次,请注意,这只是一个粗略的示例,可以让您大致了解情况,但您可以看到a)锯齿状或锯齿状,b)模糊,c)尖锐程度与您在LCD上看到的一样


对于字体显示(Windows上的ClearType和FreeType中的亚像素渲染),这方面的实际实现有一个更复杂的算法。它们考虑到单个子像素彼此流血或发光,它们保留总的颜色强度或能量。它们还考虑到亚像素间距不均匀(R和G之间的间距,或G和B(像素中)之间的间距可能小于B和R之间的间距),最后,一些显示器具有完全不同的像素布局。

据我所知,不存在具有亚像素RGB渲染的图形库

以下是一些可能的原因:

  • 微软有一个关于RGB亚像素渲染技术的平台。我不知道这些专利是否只适用于字体光栅化,但如果不适用,这可能是其他图形库不使用它的一个很好的原因
  • 正如问题中指出的,亚像素渲染依赖于硬件实现。它适用于通过并排放置3个颜色单元(例如LCD显示器)来合成颜色的显示器。对于所有其他显示类型(等离子、投影仪、旧CRT),它都不起作用
  • 亚像素渲染仅添加水平分辨率。这种限制对于字体光栅化来说不是问题,因为字体通常在水平方向上需要更高的分辨率(请参见粗体和斜体字符和紧排)。对于“自定义”图形,在每个轴上有不同的分辨率是很奇怪的
  • 亚像素渲染不适用于旋转显示。例如,移动设备必须同时使用RGB亚像素渲染和抗锯齿
  • 亚像素渲染仅适用于显示器的本机分辨率
  • 看起来色盲的人在亚像素渲染方面有问题。有关更多信息,请参见此
  • 亚像素渲染可以很好地处理黑白背景或黑白背景。对于其他背景,“渲染器”必须知道背景颜色才能调整亚像素效果。正是由于这个原因,Office 2013停止使用ClearType
  • 这更加主观,但亚像素渲染和抗锯齿之间的差异非常细微。亚像素渲染的缺点和增加的复杂性可能不值得

我想,更好的图形的未来是更高的,比如苹果视网膜显示器。

有人用ImageMagick获得了一些有趣的结果。方法和结果以及一个有趣的讨论如下:


的确是个有趣的话题。但关键仍然是:这项技术有多有用,因为这样的过程只会使特定类型显示器上的未缩放图像受益?

在antigrain.com上使用AGG,通过定义自己的转换管道将输出映射到设备像素,似乎是可能的。
请参见

Cairo支持亚像素定位。所有坐标都是双精度的。例如,我知道可以使用非整数坐标,但我指的是RGB亚像素渲染,而不仅仅是抗锯齿渲染。RGB亚像素渲染考虑到LCD屏幕上的每个像素由红色、绿色和蓝色亚像素组成。我会更详细地更新这个问题。好的,明白了。事实上,我不知道一些字体引擎可以做到这一点(我怀疑freetype会将像素“拆分”为RGB值,是吗?)。此外,这将取决于rgb矩阵的实际配置,因此可能最终在屏幕上弊大于利,例如,是的,它非常依赖于像素布局。这就是为什么你不应该把它用于网络上的静态图像。Freetype确实可以做到这一点。在所有现代Linux发行版上,Freetype都设置为使用抗锯齿、rgb亚像素渲染和“轻微”暗示。轻微暗示非常好,它强制字体垂直放置在像素网格上,但允许自由水平放置,因为我们在那里有子像素。结果非常清晰,很像Windows上的ClearType。实际上,这并没有将字体的黑色或白色“分割”为硬RGB值,实际上它只是添加了一个提示