gpt4 book ai didi

javascript - 在 Chrome 18 中检测 SwiftShader WebGL 渲染器

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:28 31 4
gpt4 key购买 nike

我有一个 2D HTML5 游戏引擎 ( www.scirra.com ),我真的想检测 WebGL 是否要使用 Chrome 18 的“Swiftshader”软件渲染器进行渲染。如果是这样,我们将非常更愿意退回到普通的 canvas 2D 上下文,就像在其他浏览器中发生的那样。那里的大多数人都使用 CPU 较弱的低端机器,在软件渲染时将游戏变成幻灯片,我认为在许多情况下,2D Canvas 会被硬件加速。然而,WebGL 上下文创建在 Chrome 中永远不会失败,并且没有明显的方法来检测 SwiftShader。

我尝试过的事情:

// Always returns "WebKit WebGL" regardless of SwiftShader
gl.getParameter(gl.RENDERER)

// Always returns "WebKit" regardless of SwiftShader
gl.getParameter(gl.VENDOR)

我可以尝试考虑最大纹理大小或其他 MAX_* 属性,但我怎么知道即使使用 SwiftShader,它们也不会因机器而异?由于我猜想 SwiftShader 旨在模仿普通硬件,因此使用该方法可能仍会出现很多误报。

我不想写启动性能测试,因为:

  • 我们只是做一个引擎,而不是任何特定的游戏,所以我不知道我们如何编写一个公平的测试,该测试在一般情况下适用于任何性能配置文件的任何游戏,并且高度准确
  • 一个好的测试可能需要一两秒钟才能完成运行,这可能会打断用户体验或让他们不得不观看一些方 block 四处移动或其他什么
  • 它可能会产生新的复杂性,例如如果我们缓存结果,如果用户更新他们的驱动程序并解决问题会怎样?

我不想在 Chrome 上完全禁用 WebGL,因为硬件加速的 WebGL 性能可以比 canvas 2D 快两倍以上!如果我们那样做,每个人都会输。

我不想添加游戏内开关或用户设置,因为有多少用户关心这些?如果游戏速度很慢,他们就会退出并且很可能不会寻找解决方案。 “这游戏糟透了,我去别的地方吧。”我认为只有少数用户会费心阅读说明,例如“顺便说一句,如果这个游戏很慢,请尝试将此设置更改为‘canvas 2D’...”

我目前最好的猜测是使用 gl.getSupportedExtensions()。我发现 SwiftShader 报告了以下扩展:

OES_texture_float,OES_standard_derivatives,WEBKIT_WEBGL_lose_context

...但是真正的硬件加速上下文报告:

OES_texture_float,OES_standard_derivatives,WEBKIT_WEBGL_lose_context,WEBKIT_WEBGL_compressed_textures

请注意添加了 WEBKIT_WEBGL_compressed_textures。一些快速研究表明这可能会或可能不会得到广泛支持。参见 this support table - GL_EXT_texture_compression_s3tcGL_ARB_texture_compression 似乎在桌面卡上得到广泛支持。此外,该表似乎只列出了相当老的模型,所以我可以冒险猜测所有现代桌面图形卡都支持 WEBKIT_WEBGL_compressed_textures...因此我对 SwiftShader 的检测标准是:

  • Windows 操作系统
  • 谷歌浏览器
  • WebGL 上下文支持WEBKIT_WEBGL_compressed_textures
  • 结果:回到 Canvas 2D

当然,如果 SwiftShader 将来添加压缩纹理支持,这又会中断。但是我看不到使用软件渲染器压缩纹理的优势!此外,如果有许多不支持 WEBKIT_WEBGL_compressed_textures 的实际工作视频卡,它仍然会出现很多误报!

难道没有更好的方法来检测 SwiftShader 吗?

最佳答案

转到 http://code.google.com/p/angleproject/wiki/ExtensionSupport查看 EGL 扩展 EGL_ANGLE_software_display,如果它可用,那是因为有一个 SwiftShader 后端。

关于javascript - 在 Chrome 18 中检测 SwiftShader WebGL 渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456491/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com