我必须使用硬件可以做的最好的东西在threejs应用程序中加载一些大纹理。 我用:
var local_size = gl.getParameter(gl.MAX_TEXTURE_SIZE);
确定设备接受的最大尺寸。 在PC上,此调用返回的内容与现实相符,例如,如果此调用返回8096,那么我可以使用此大小的纹理。 在移动设备上虽然情况变化很大。例如,在nexus 5上,我得到4096,这个尺寸的纹理确实有效。 在三星Galaxy标签3上,我得到4096但是如果我使用这个尺寸,我只是得到一个黑色纹理...我可以使用的最大尺寸是2048。 在Nexus 4上,同样的问题。
总结:有些浏览器(至少是Android上的chrome)只返回有关webgl实现功能的错误值。
我在Khronos webgl回归测试套件中发现了一些关于如何测试实际功能的提示。
https://www.khronos.org/registry/webgl/sdk/tests/conformance/limits/gl-max-texture-dimensions.html
然而,这是很多代码,可能会减慢我的应用程序的启动速度,所以(最后)这里是我的问题: 关于如何测试特定设备的实际纹理功能的任何想法?也许是一个错误条件来测试在Threejs中纹理创建是否出错?
感谢您的帮助!