什么"性能警告:一些纹理是不可退的"是什么意思?

时间:2013-05-19 17:40:16

标签: webgl

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

PERFORMANCE WARNING: Some textures are unrenderable.

这是什么意思?

2 个答案:

答案 0 :(得分:9)

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

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

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

有关“纹理完整”,“立方体完整”等的定义...请参阅OpenGL ES 2.0 spec section 3.7.10

答案 1 :(得分:3)

这也可能是Chrome 28中的一个错误的结果:http://code.google.com/p/chromium/issues/detail?id=242321即使我的WebGL脚本根本没有使用任何纹理,我也收到了此消息。

它已在Chrome 29中修复。