Hlavní navigace

Názor ke článku Sedíte v zlom vlaku (Linux & MS) od Lael Ophir - [160] Zapomněl bych na XRender, tam jsem si...

  • 19. 9. 2008 19:27

    Lael Ophir (neregistrovaný)

    [160] Zapomněl bych na XRender, tam jsem si materiál musel přečíst. Ve vašem linku je popisováno, jak probíhá antialiasing, a jak subpixel rendering. V oboru případech musí aplikace připravit vhodné masky. V případě WPF drží Windows glyph cache na grafické kartě, což je obdobné. Umístění glyphu na správný subpixel (protože není nutné začínat kreslit na hranici celého pixelu) a následný subpixel rendering ale obstará GPU. Rovněž si všimněte, co XRender nabízí za transformace. V podstatě jde jen o primitivní alpha maskování na jednom či třech kanálech. WPF umí, jak jsem psal, používat pixel shader pro antialiasing a subpixel rendering, takže nemusí aplikace (či framework) počítat masky. Navíc ale umí používat shadery na výplně (XRenderu je musí připravit SW), rotaci, skew apod. Ve výsledku je možné do grafické karty nacpat glyphy "A", "h", "o", a "j", a poté komplet pomocí CPU vyrastrovat nápis Ahoj, použít ho jako masku na obdélník přecházející z červené do zelené (získáme červeno-zelený text), a výsledek nechat zrcadlit s intenzitou 25% na dalším obdélníku žluté barvy, nebo naaranžovat na nějaký 3D surface. Jak vidíte, v podstatě vše bylo uděláno na GPU. Stejně tak můžete triviálně udělat z textur krychli, a skriptem jí rotovat - WPF pouze GPU řekne, jak má provést zešikmení textury, jaké další transformace na ní aplikujete (třeba blur, emboss, nebo něco co si napíšete sám), a GPU to udělá.

    Vysvětlil jsem, kde je rozdíl?