Webgl 什么是;性能警告:某些纹理无法渲染”;用铬是什么意思?

Webgl 什么是;性能警告:某些纹理无法渲染”;用铬是什么意思?,webgl,Webgl,在我的WebGL中,在JavaScript控制台中,我看到了警告 PERFORMANCE WARNING: Some textures are unrenderable. 这意味着什么?WebGL必须强制执行OpenGL ES 2.0行为,并阻止WebGL应用程序访问他们无权访问的数据。要做到这一点,WebGL实现必须验证许多事情,包括根据OpenGL ES 2.0规范,所有要读取的纹理都是可读的,并且没有扩展 因此,在每次绘制时,他们必须检查所有纹理是否符合所有要求的标准,包括检查每个纹理是

在我的WebGL中,在JavaScript控制台中,我看到了警告

PERFORMANCE WARNING: Some textures are unrenderable.

这意味着什么?

WebGL必须强制执行OpenGL ES 2.0行为,并阻止WebGL应用程序访问他们无权访问的数据。要做到这一点,WebGL实现必须验证许多事情,包括根据OpenGL ES 2.0规范,所有要读取的纹理都是可读的,并且没有扩展

因此,在每次绘制时,他们必须检查所有纹理是否符合所有要求的标准,包括检查每个纹理是否“纹理完整”,是否是立方体贴图是否“立方体完整”和“mipmap立方体完整”,是否是非二次方维,纹理过滤是否设置正确,等等。。。如果不满足这些条件中的任何一个,WebGL实现将替换透明的黑色纹理,以便行为符合规范并在设备之间保持一致

这些检查非常昂贵,因此WebGL实现可以采用的快捷方式是跟踪是否有任何纹理无法渲染。如果没有无法渲染的纹理,则在绘制时不需要检查。上面的警告是,有些纹理是不可渲染的,这基本上告诉您WebGL必须执行所有这些昂贵的检查。如果您确保所有纹理都可渲染,WebGL可以跳过此检查,您的应用程序可能会运行得更快


有关“纹理完整”、“立方体完整”等的定义。。。请参见

这也可能是Chrome 28中的错误导致的:即使我的WebGL脚本根本没有使用任何纹理,我也收到了这条消息


它已在Chrome 29中修复。

如果您使用的是Three.js,则可能是错误使用Three.ImageUtils.loadTexture造成的。在将具有此纹理的网格添加到场景之前,应等待loadTexture回调。@dIsoVi Bravo!到目前为止,我看到的所有示例都没有使用回调,所以我甚至不知道它是异步的。谢谢我不知道Three.JS的细节,但通常在向场景添加网格之前,我不会等待纹理加载,而是创建1x1像素的纹理并将图像加载到该纹理中。这样我可以立即绘制网格,因为1x1像素纹理满足所有渲染要求。加载图像后,我将使用图像数据更新纹理,然后设置过滤和/或生成mips。这样我可以立即开始渲染。该解决方案是否适合您的应用程序取决于您。