使用 绘图时gl.disableVertexAttribArray(0)
,Firefox(就像他们说的其他浏览器一样)发出以下警告:
WebGL 警告:drawElementsInstanced:未启用顶点属性 0 数组的绘图会强制浏览器在桌面 OpenGL 平台(例如 Mac)上运行时进行昂贵的仿真工作。最好始终在启用顶点属性 0 数组的情况下进行绘制,方法是使用 bindAttribLocation 将一些始终使用的属性绑定到位置 0。
我知道这个。我知道不禁用 0 被认为是很好的做法。我知道它到处都有。
然而,这很有趣,这正是我想要的。在我的着色器中,我有一个 3D 属性和另一个 2D 属性,用于在 3D 点周围的窗口坐标中绘制一个 2D 标记:
gl_Position = doSomething(aPosition) + vec4(aDelta, 0.0, 0.0);
有时我只想aDelta
保持不变和aPosition
变化,有时反过来。我特别不想链接同一个程序两次(将属性绑定到不同的位置),或者有两个不同的着色器,因为其余的功能是共享的,要么是浪费。
我知道性能受到影响,但它就是这样工作的。模拟与否,结果是正确的并且符合规范。这是一个简单的函数,一次只绘制几个顶点。任何其他方式对我来说都是“昂贵的仿真”。我可以向 Firefox 解释一下,这样它就不会淹没我的控制台(仅这个警告就占用了所有通常空间的一半!)如果我分发这个,我的用户不会认为我无能无视警告?