public VAO(OpenGL gl, IShaderProgram program, VBO vbo) { _gl = gl; _program = program; VBO = vbo; var buffers = new uint[1]; gl.GenVertexArrays(1, buffers); Handle = buffers[0]; using (new Bind(program)) using (new Bind(this)) using (new Bind(vbo)) { var stride = Vect3f.SizeInBytes * 2 + Vect4f.SizeInBytes; gl.EnableVertexAttribArray(0); gl.VertexAttribPointer(0, 3, OpenGL.GL_FLOAT, true, stride, IntPtr.Zero); gl.BindAttribLocation(program.Handle, 0, "vert_position"); gl.EnableVertexAttribArray(1); gl.VertexAttribPointer(1, 3, OpenGL.GL_FLOAT, true, stride, new IntPtr(Vect3f.SizeInBytes)); gl.BindAttribLocation(program.Handle, 1, "vert_normal"); gl.EnableVertexAttribArray(2); gl.VertexAttribPointer(2, 4, OpenGL.GL_FLOAT, false, stride, new IntPtr(Vect3f.SizeInBytes * 2)); gl.BindAttribLocation(program.Handle, 2, "vert_colour"); } }
public PointRenderer(OpenGL gl, IShaderProgram shader, IEnumerable<Vert> data) { _shader = shader; _vbo = new VBO(gl, BeginMode.Lines, data); _vao = new VAO(gl, _shader, _vbo); }