如何在 PostScript 中使用双线性渐变有效地为四边形着色
How to efficiently color quadrilaterals using bilinear gradients in PostScript
我正在创建一个 PostScript 绘图,其中有数百个四边形。我希望使用四种颜色之间的双线性插值对每个四边形进行着色,每种颜色都与一个顶点相关联。
目前,对于每个四边形,我正在使用
newpath
<<
/BBox [294 353.6387 627.0481 644.4492
/Domain [294 353.6387 627.0481 644.4492
/ShadingType 6
/ColorSpace [/DeviceRGB]
/DataSource
[
0
322.00000000 639.52198166
308.00000000 633.28505452
308.00000000 633.28505452
294.00000000 627.04812738
309.50334395 629.25461291
309.50334395 629.25461291
325.00668790 631.46109845
339.32269715 637.95516131
339.32269715 637.95516131
353.63870639 644.44922417
337.81935320 641.98560292
337.81935320 641.98560292
0.23047 0.29688 0.75
0.23047 0.29688 0.75
0.91493 0.82918 0.78143
0.91948 0.82593 0.77364
]
>>
shfill
ShadingType 6 对于我想要完成的事情来说似乎有点矫枉过正,但是将四边形细分为三角形并进行线性插值会产生一些质量较低的东西。
是否有更有效的方法来编写此效果,以便更快地渲染数百个四边形?
我可以通过将 shfill
替换为
来显着加快速度
gsave
x y w h rectclip
shfill
grestore
其中x
和y
是包围矩形的左下坐标,w
和h
是矩形的宽度和高度。
我正在创建一个 PostScript 绘图,其中有数百个四边形。我希望使用四种颜色之间的双线性插值对每个四边形进行着色,每种颜色都与一个顶点相关联。
目前,对于每个四边形,我正在使用
newpath
<<
/BBox [294 353.6387 627.0481 644.4492
/Domain [294 353.6387 627.0481 644.4492
/ShadingType 6
/ColorSpace [/DeviceRGB]
/DataSource
[
0
322.00000000 639.52198166
308.00000000 633.28505452
308.00000000 633.28505452
294.00000000 627.04812738
309.50334395 629.25461291
309.50334395 629.25461291
325.00668790 631.46109845
339.32269715 637.95516131
339.32269715 637.95516131
353.63870639 644.44922417
337.81935320 641.98560292
337.81935320 641.98560292
0.23047 0.29688 0.75
0.23047 0.29688 0.75
0.91493 0.82918 0.78143
0.91948 0.82593 0.77364
]
>>
shfill
ShadingType 6 对于我想要完成的事情来说似乎有点矫枉过正,但是将四边形细分为三角形并进行线性插值会产生一些质量较低的东西。
是否有更有效的方法来编写此效果,以便更快地渲染数百个四边形?
我可以通过将 shfill
替换为
gsave
x y w h rectclip
shfill
grestore
其中x
和y
是包围矩形的左下坐标,w
和h
是矩形的宽度和高度。