Ejemplo n.º 1
0
        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);
        }