我能在Firefox中通过编程来启用WebGL抗锯齿吗?

12
例如,对于这样的页面(链接),在Safari 7中它是反锯齿的,但在Firefox 29(OS X 10.9)中不是。
Firefox似乎有抗锯齿的能力。如果我将about:config设置中的“webgl.msaa-force”设置为“true”,则它就是反锯齿的。
有没有办法使Firefox针对我的特定网页进行抗锯齿,而不依赖于用户对其about:config进行调整?
我正在使用three.js,它有一个“antialias”标志,但它似乎只对Safari有影响,而不是Firefox。
1个回答

10

简短的回答是“不行”。

浏览器是否支持抗锯齿取决于浏览器本身。许多驱动程序在某些条件下使用抗锯齿会崩溃,因此浏览器通常会在这些计算机上禁用抗锯齿。

请注意,默认情况下antialias标志为true。换句话说,WebGL的默认设置是启用抗锯齿,但仍由浏览器决定。具体设置antialiastrue最多只能作为提示(嘿,我真的想要抗锯齿),但我不知道有哪些浏览器会将其用作提示。如果可以的话,它们通常会打开抗锯齿功能。

另一方面,将antialias设置为false确实意味着“不要抗锯齿”。

您可以尝试自己进行抗锯齿处理。例如,您可以以更高的分辨率渲染,并使用CSS在较小的画布中显示,此时浏览器在合成WebGL时很可能会使用双线性插值。您还可以将渲染的图像存储为纹理,然后在将其渲染到画布时应用某种抗锯齿滤镜。


3
有趣。看起来Firefox有一个GPU黑名单,在Mac上他们封锁了“所有NVIDIA和Intel硬件”(https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers),以及“除AMD Radeon HD 6490M和ATI Radeon HD 4670之外的所有ATI卡”,此外,这个黑名单还有双GPU系统的问题!因此,基本上在理论上,Mac上的Firefox支持AA,但除了早期的2011年15英寸MacbookPro和几台2009/2010款iMac之外,实际上并不支持。这令人失望。我想知道他们是否计划取消任何其他卡的黑名单。 - user3609340
我猜这基本上取决于苹果。当苹果修复他们的驱动程序时,Firefox 可能会为那些机器打开抗锯齿功能。Chrome 的黑名单在这里。列表可能不同的事实很可能是基于每个浏览器处理其图形的方式。使用驱动程序的不同方式显示不同的错误。 - gman
实际上,我阅读过的错误报告似乎表明黑名单中的差异是由于合作或工作量问题而非技术问题所致。WebGL维基百科指出:“这些黑名单和白名单中的规则目前是针对特定浏览器的,尽管正在进行工作以在浏览器之间共享它们。”很明显,在Mac世界中有超过2张支持抗锯齿的显卡。 - user3609340
1
这不仅仅是关于“工作的抗锯齿”。问题在于你是否能够使驱动程序崩溃。使用抗锯齿的应用程序尽力避免崩溃。但网页则不同。浏览器必须尽力防止某些随机网页导致浏览器或操作系统崩溃。因此,当他们发现驱动程序中的错误时,他们必须找到一种解决方法。通常,解决方法是禁用抗锯齿。我希望我的意思表达清楚。应用程序将找到一种不触发错误的方法。浏览器也会尝试找到一种方法,但与应用程序不同,他们无法控制人们如何使用WebGL。 - gman
2
顺便说一句:这就是为什么在WebGL上,多重渲染目标(MRT)目前无法在Mac上使用。很容易导致驱动程序崩溃。在某些条件下,MRT可以在Mac上工作,并且使用MRT的本地游戏和应用程序不会触发这些条件,但是运行WebGL的随机网页可能会轻松触发这些条件,所以遗憾的是,在Apple修复驱动程序或者浏览器找到其他解决方法之前,他们不能在Mac上启用MRT :( - gman
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接