public void SetData(TriangleBuffer triangles, BufferUsageHint usageHint) { _indexCount = triangles.IndexCount; if (_indexCount % 3 != 0) { throw new IndexOutOfRangeException("Number of index entries must be divisible by 3."); } if (_indexCount == 0) { Dispose(); return; } if (_vertexArray == 0) { _vertexArray = GL.GenVertexArray(); _elementArrayBuffer = GL.GenBuffer(); _arrayBuffer = GL.GenBuffer(); GL.BindVertexArray(_vertexArray); GL.BindBuffer(BufferTarget.ElementArrayBuffer, _elementArrayBuffer); GL.BindBuffer(BufferTarget.ArrayBuffer, _arrayBuffer); _specification.Bind(); } else { GL.BindBuffer(BufferTarget.ElementArrayBuffer, _elementArrayBuffer); GL.BindBuffer(BufferTarget.ArrayBuffer, _arrayBuffer); } triangles.UploadData(usageHint); }