Javascript 画布上下文属性以防止硬件加速渲染?

Javascript 画布上下文属性以防止硬件加速渲染?,javascript,canvas,2d,hardware,acceleration,Javascript,Canvas,2d,Hardware,Acceleration,是否存在画布上下文的设置,以防止其渲染器使用硬件加速? 我想在不使用它的情况下进行渲染,但不想要求用户从他们的chrome浏览器中禁用它,因为这违反了直觉,也无法提供无缝的工作流体验。简短回答: 没有,但至少开发铬的人正在考虑。在该页面中,您将找到一个名为Demode的内部方法 长答覆: 目前还没有任何标准化的东西,从2D上下文中执行此降级的唯一方法是Chrome上下文Chrome only Per: CanvasRenderingContext2D.Demode 这会导致当前使用硬件加速后端的

是否存在画布上下文的设置,以防止其渲染器使用硬件加速? 我想在不使用它的情况下进行渲染,但不想要求用户从他们的chrome浏览器中禁用它,因为这违反了直觉,也无法提供无缝的工作流体验。

简短回答: 没有,但至少开发铬的人正在考虑。在该页面中,您将找到一个名为Demode的内部方法

长答覆: 目前还没有任何标准化的东西,从2D上下文中执行此降级的唯一方法是Chrome上下文Chrome only

Per:

CanvasRenderingContext2D.Demode 这会导致当前使用硬件加速后端的上下文回退到软件后端。所有国家都应该得到保护

很明显,他们已经考虑过了,但我不希望它在任何时候被采纳,因为它可能不是讨论的优先主题/痛点。此外,不幸的是,由于它是一个特定于Chrome的实现,而且我们正在处理改变浏览器本身行为的方式,因此没有办法通过多边形填充或填充将此功能修补到其他浏览器中

结论: 技术上的答案是可能的。这取决于您的目标浏览器支持的非标准化功能不会很快也可能永远不会标准化,以及您是否愿意不支持任何其他浏览器。尽管如此,务实的答案是否定的


希望这有帮助

恐怕你误解了这一页。chrome上下文在这里指的是扩展chrome://,而不是类似chrome的浏览器;-您也应该可以从firefox扩展和其他ChromeAPI扩展标准化后的浏览器中访问它,但不能从web内容中访问,甚至不能在chromium中访问。@Kaido您说得对,我做到了!谢谢你指出这一点。我现在是移动的,所以我现在不能编辑它。如果你想编辑它,我很乐意接受更改,否则我会在有机会的时候接受:DMyself也在手机上。表示方法发生了什么?它是消失了还是被替换了?你到底为什么要这么做?你的问题听起来像个X-Y问题。我知道,硬件加速可能会引入错误和不精确性,但可能有一种方法可以解决您所面临的实际问题。否则,由于您可以访问原始像素位图,因此您可以始终实现2DContext API的所有功能,这些功能将始终由软件呈现。基本上,我要做的是呈现低分辨率文本,而不进行抗锯齿。唯一的方法是禁用硬件加速,因为它会导致所有字体都有别名。我可能最终会将我的工作打包到一个nw.js应用程序中,这样它就可以使用-disable gpu作为chromium参数之一运行。我只是希望我不必这么做,因为这看起来像是为了简单的事情而做的额外工作。嗯?即使使用软件渲染,如果字体不是位图,也会进行反序列化。或者您想要像HTML中那样的亚像素渲染?这是可行的。但是无论如何,试着把这个问题也发出来。别忘了在那里加上一个你想用的特定字体等等。嗯,这很奇怪。我认为这是硬件加速,但可能与windows 10的外观设置有关——设置屏幕字体的平滑边缘会改变字体是否使用抗锯齿渲染。这很奇怪,因为我可以发誓,当我在chrome中禁用/启用硬件加速时,我看到了它的变化。因为我最初禁用了平滑功能,chrome中的内容即使在重新启动时也会被平滑,并且只有在更改gpu设置后才会更改。。但现在,当我在windows中切换平滑选项时,它发生了变化。。奇怪。我认为关闭chrome不会重置某些东西,因为当我打开chrome时,它会重新加载我所有的标签。我想当我在chrome args中设置gpu设置时,有一些东西被强制重新加载,所以我相信这是chrome的问题。我想这只是一个Windows10的情况,我必须处理