10

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

PERFORMANCE WARNING: Some textures are unrenderable.

这是什么意思?

4

2 回答 2

9

WebGL 必须强制执行 OpenGL ES 2.0 行为并防止 WebGL 应用程序访问它们无权访问的数据。为此,WebGL 实现必须验证许多事情,包括根据 OpenGL ES 2.0 规范读取的所有纹理都是可读的,无需扩展。

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

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

有关“纹理完整”、“立方体完整”等的定义...请参阅OpenGL ES 2.0 规范第 3.7.10 节

于 2013-05-19T17:40:15.537 回答
3

这也可能是 Chrome 28 中的错误的结果:http ://code.google.com/p/chromium/issues/detail?id= 242321 即使我的 WebGL 脚本没有使用任何纹理全部。

它已在 Chrome 29 中修复。

于 2013-08-22T21:24:55.960 回答