leaving this here for future discussion.
The problem: let's say we have a utility mesh like gl-sphere and it expects attributes in the order [ position, colors, normals ]. However, we want to give the user the ability to render it with a custom shader -- but their shader might have attributes in the order [position, normals, colors].
The solution should not need to re-compile shaders since it's expensive and doesn't allow for shader re-use.
One idea is to use string aliases when defining the attributes of a VAO, and have the user pass a shader to vao.bind(). Then the VAO always knows which attribute locations to bind, assuming the gl-shader has them listed in the correct order.
leaving this here for future discussion.
The problem: let's say we have a utility mesh like
gl-sphereand it expects attributes in the order[ position, colors, normals ]. However, we want to give the user the ability to render it with a custom shader -- but their shader might have attributes in the order[position, normals, colors].The solution should not need to re-compile shaders since it's expensive and doesn't allow for shader re-use.
One idea is to use string aliases when defining the attributes of a VAO, and have the user pass a shader to
vao.bind(). Then the VAO always knows which attribute locations to bind, assuming thegl-shaderhas them listed in the correct order.