public void AddIndexBuffer() { IVertexArray vertexArray = new OpenGLVertexArray(); IIndexBuffer indexBuffer = new OpenGLIndexBuffer(new int[0]); vertexArray.Add(indexBuffer); Assert.NotNull(vertexArray.IndexBuffer); }
/// <inheritdoc/> protected override void Dispose(Boolean disposing) { if (Disposed) return; if (disposing) { if (!Ultraviolet.Disposed) { if (vao != 0) { Ultraviolet.QueueWorkItem((state) => { var vaoName = ((OpenGLGeometryStream)state).vao; gl.DeleteVertexArray(vaoName); gl.ThrowIfError(); OpenGLState.DeleteVertexArrayObject(vaoName, 0, glElementArrayBufferBinding ?? 0); }, this); } } vbuffers.Clear(); ibuffer = null; } base.Dispose(disposing); }
/// <inheritdoc/> public override void Attach(IndexBuffer ibuffer) { Contract.Require(ibuffer, nameof(ibuffer)); Contract.EnsureNot(HasIndices, UltravioletStrings.GeometryStreamAlreadyHasIndices); Contract.EnsureNotDisposed(this, Disposed); Ultraviolet.ValidateResource(ibuffer); var sdlIndexBuffer = (OpenGLIndexBuffer)ibuffer; var sdlIndexBufferName = sdlIndexBuffer.OpenGLName; this.ibuffer = sdlIndexBuffer; if (IsUsingVertexArrayObject) { using (OpenGLState.ScopedBindVertexArrayObject(vao, 0, 0, true)) { gl.BindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, sdlIndexBufferName); gl.ThrowIfError(); } } this.glElementArrayBufferBinding = sdlIndexBufferName; this.indexBufferElementType = ibuffer.IndexElementType; }
public void CreateIndexBuffer(params int[] data) { IIndexBuffer buffer = new OpenGLIndexBuffer(data); Assert.Equal(data.Length, buffer.Count); }