NodeJS Webgl:MAX_COMBINED_TEXTURE_IMAGE_UNITS根据浏览器而变化

yks3o0rb  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(97)

我正在处理webgl代码,直到我在chrome上运行它之前,它一直工作得很好。我通过调试找到了确切的问题,发现是单个参数差异导致了问题。
在chrome和node中(gl是webgl上下文):

console.log(gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); // returns 64

在firefox中:

console.log(gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS)); // returns 192

我认为这些数字可能特定于您自己的设备GPU。我不切换gpu的每次我改变浏览器。我不知道为什么会发生这种情况,但它发生在chrome和node中,它破坏了我的GPU重代码。是否有任何方法可以解锁对GPU功能的完全访问?
nodejs的解决方案将是最受欢迎的,因为浏览器限制GPU的使用是可以理解的,但我仍然需要运行大量的GPU代码。

9o685dep

9o685dep1#

没有MAX_COMBINED_TEXTURE_IMAGE_UNITS不是你应该关心的东西,因为它不够具体,它是MAX_TEXTURE_IMAGE_UNITSMAX_VERTEX_TEXTURE_IMAGE_UNITS,这取决于你需要这些单位的地方。
一些供应商报告较高的值,但回退到低效的方法来处理高纹理单元使用率,而一些后端(DirectX,OpenGL,OpenGL ES,Vulkan)由于驱动程序功能而具有不同的值。
我会在这里大胆地说,你并不真的需要所有这些纹理单元,而是不需要将你的数据原子地提供给gpu,而是正确地打包它,这不仅会增加你的兼容性,而且会提高你的性能。

相关问题