public Mesh(Shader shader = null)
{
this.customBuffers = new Dictionary<int, VertexAttrib>();
// use VAO if possible
this.vertexArrayId = NewVAO();
if (this.vertexArrayId > -1)
{
this.Bind();
}
// vertex
this.vBufferId = NewVBO();
GL.BindBuffer(BufferTarget.ArrayBuffer, this.vBufferId);
int vertexAttribId = 0;
GL.EnableVertexAttribArray(vertexAttribId);
GL.VertexAttribPointer(vertexAttribId, 2, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);
// uv
this.uvBufferId = NewVBO();
GL.BindBuffer(BufferTarget.ArrayBuffer, this.uvBufferId);
int uvAttribId = 1;
GL.EnableVertexAttribArray(uvAttribId);
GL.VertexAttribPointer(uvAttribId, 2, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);
// vc
this.vcBufferId = NewVBO();
GL.BindBuffer(BufferTarget.ArrayBuffer, this.vcBufferId);
int vcAttribId = 2;
GL.EnableVertexAttribArray(vcAttribId);
GL.VertexAttribPointer(vcAttribId, 4, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);
if (shader == null)
{
shader = simpleShader;
shader.SetUniform("tex", 0);
}
this.shader = shader;
this.noMatrix = false;
this.hasVertexColors = true;
this.requireUseTexture = true;
}