Webgl 获得';性能警告';Chrome中的消息

Webgl 获得';性能警告';Chrome中的消息,webgl,three.js,Webgl,Three.js,我最近才开始收到这些信息,我想知道是否有人看到过它们,或者知道是什么导致了它们。我在MacOS上使用了Chrome版本'21.0.1180.57'的Three.js。我在Safari或FireFox中没有收到这些消息 性能警告:属性0已禁用。这对性能有很大的影响 WebGL:错误太多,将不再向控制台报告此上下文的错误 看起来像一个Chrome bug: Firefox上的相同消息是:错误:WebGL:在桌面OpenGL平台(例如Mac)上运行时,未启用vertex attrib 0 array的

我最近才开始收到这些信息,我想知道是否有人看到过它们,或者知道是什么导致了它们。我在MacOS上使用了Chrome版本'21.0.1180.57'的Three.js。我在Safari或FireFox中没有收到这些消息

性能警告:属性0已禁用。这对性能有很大的影响

WebGL:错误太多,将不再向控制台报告此上下文的错误


看起来像一个Chrome bug:


Firefox上的相同消息是:错误:WebGL:在桌面OpenGL平台(例如Mac)上运行时,未启用vertex attrib 0 array的绘图会强制浏览器执行昂贵的仿真工作。最好始终在启用顶点属性0数组的情况下绘制,方法是使用bindAttribLocation将一些始终使用的属性绑定到位置0。”

这不仅是一个性能缺陷,还将导致不良输出

问题:如果JS试图运行一个WebGL着色器,而该着色器希望在不提供颜色数组的网格上以gl_颜色显示颜色信息,则会出现此消息

解决方案:使用具有恒定颜色的WebGL着色器,不访问gl_颜色,或在要着色的网格中提供颜色数组

如果使用Evan Wallace提供的lightgl.js,请尝试在
new GL.Mesh
语句中添加选项
colors:true
,并提供与
顶点
数组大小相同的propper
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,但问题应该是类似的,在着色之前为网格提供颜色。

是的,我也看到了。奇怪的是,当第一次渲染时,一切都正常。后来添加其他元素时,我开始收到警告。我希望有人也有同样的问题,并且知道具体是什么凯莉是原因。我试图避免在我添加到场景中的每个元素后检查警告。我会尝试,并报告我发现的内容。我以为我已经尝试根据我找到的另一个链接删除所有圆柱体,但显然不正确。我发现我当前使用的唯一导致此问题的元素是c圆柱体。我想我会等着看它是否在未来的Chrome更新中修复,或者是否有其他元素可以使用。使用圆柱体的全部目的是检测精灵上的碰撞。我无法将精灵与光线相交,所以我用一个不可见的圆柱体包围了精灵。。。