【发布时间】:2012-07-30 19:42:53
【问题描述】:
我最近才开始收到这些消息,想知道是否有人看过它们,或者知道是什么原因造成的。我在 MacOS 上使用带有 Chrome 版本“21.0.1180.57”的 Three.js。我没有通过 Safari 或 FireFox 收到这些消息。
性能警告:属性 0 已禁用。这有显着的性能损失
WebGL:错误太多,不会再向控制台报告此上下文的错误。
【问题讨论】:
我最近才开始收到这些消息,想知道是否有人看过它们,或者知道是什么原因造成的。我在 MacOS 上使用带有 Chrome 版本“21.0.1180.57”的 Three.js。我没有通过 Safari 或 FireFox 收到这些消息。
性能警告:属性 0 已禁用。这有显着的性能损失
WebGL:错误太多,不会再向控制台报告此上下文的错误。
【问题讨论】:
Firefox 上的相同消息是:“错误:WebGL:在未启用顶点属性 0 数组的情况下绘图会强制浏览器在桌面 OpenGL 平台(例如 Mac 上)上进行昂贵的仿真工作。最好始终使用顶点属性进行绘制启用 0 数组,通过使用 bindAttribLocation 将一些始终使用的属性绑定到位置 0。"
这不仅是性能上的缺陷,还会导致输出不佳。
问题:如果 JS 尝试在不提供颜色数组的网格上运行期望 gl_Color 中的颜色信息的 WebGL 着色器,则会出现此消息。
解决方案:使用具有恒定颜色的 WebGL 着色器而不访问 gl_Color 或在要着色的网格中提供颜色数组。
如果使用来自 Evan Wallace 的 lightgl.js,请尝试在 new GL.Mesh 语句中添加选项 colors:true 并提供与 vertices 数组大小相同的属性 mesh.colors 数组。或者试试这个着色器:
blackShader = new GL.Shader(
'void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }',
'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); }'
);
抱歉,我从未使用过 Three.js,但问题应该类似,在着色之前为您的网格提供颜色。
【讨论】:
看起来像一个 Chrome 错误:
【讨论】: