gpt4 book ai didi

javascript - WebGL 参数在浏览器之间不一致

转载 作者:行者123 更新时间:2023-12-04 20:38:26 26 4
gpt4 key购买 nike

我的 WebGL 应用程序遇到了与内存相关的问题,主要是在配备英特尔显卡 IGP 的 PC 上。

当试图找到瓶颈时,我从浏览器中得到不一致的数据。

使用:

var viewport = gl.getParameter(gl.MAX_VIEWPORT_DIMS);
var texturesize = gl.getParameter(gl.MAX_TEXTURE_SIZE);
var renderbuffer = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);

我在同一台电脑上获取的值不一致:

Chrome

  • gl.MAX_VIEWPORT_DIMS = 16384
  • gl.MAX_TEXTURE_SIZE = 16384
  • gl.MAX_RENDERBUFFER_SIZE = 16384

火狐

  • gl.MAX_VIEWPORT_DIMS = 16384
  • gl.MAX_TEXTURE_SIZE = 8192
  • gl.MAX_RENDERBUFFER_SIZE = 8192

Safari

  • gl.MAX_VIEWPORT_DIMS = 8192
  • gl.MAX_TEXTURE_SIZE = 16384
  • gl.MAX_RENDERBUFFER_SIZE = 8192

我使用在线 WebGL 浏览器报告得到相同的值

谁知道这里发生了什么?

最佳答案

https://browserleaks.com/webgl检查差异,例如正在使用哪个 api(Unmasked Renderer),或者正在使用哪个 VS 和 PS 版本:也许一个浏览器正在使用一个库版本而另一个正在使用另一个(例如 Direct3D9 和 Direct3D11 其他)。甚至不同的浏览器可能出于某种原因将值向下限制。

但是,即使从不同的浏览器获得不同的值,这些都是一维限制,您的应用应该使用更小的值。

例如对于渲染缓冲区和视口(viewport):4K 分辨率为 3840 x 2160 像素(更小),甚至 8K 也小于 8192。可能您的计算机出于内存原因不支持 8K,即使 1D 限制为 8192。

对于纹理同样的问题:16384 x 16384 可能会使用 1GB 的 VRAM(取决于纹素格式和其他问题),并且由于分配问题(VRAM 已经分配了 block )这么大的纹理甚至可能有问题在 2GB 或 4GB GPU 中分配...在 Intel GPU 中可能会更难。

如果您希望您的应用程序在不同的 PC 上执行,您应该使用更小的值,这样您提到的那些不同的值不会真正影响您:您必须使用更小的值(或者至少有不同的替代方案,使用小得多的值),如果您希望您的应用程序在不同的电脑上运行而不会出现问题。

关于javascript - WebGL 参数在浏览器之间不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510450/

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