我正在处理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代码。
1条答案
按热度按时间9o685dep1#
没有
MAX_COMBINED_TEXTURE_IMAGE_UNITS
不是你应该关心的东西,因为它不够具体,它是MAX_TEXTURE_IMAGE_UNITS
或MAX_VERTEX_TEXTURE_IMAGE_UNITS
,这取决于你需要这些单位的地方。一些供应商报告较高的值,但回退到低效的方法来处理高纹理单元使用率,而一些后端(DirectX,OpenGL,OpenGL ES,Vulkan)由于驱动程序功能而具有不同的值。
我会在这里大胆地说,你并不真的需要所有这些纹理单元,而是不需要将你的数据原子地提供给gpu,而是正确地打包它,这不仅会增加你的兼容性,而且会提高你的性能。