/// <summary> /// 一个vertex array object。(即VAO) /// <para>VAO是用来管理VBO的。可以进一步减少DrawCall。</para> /// </summary> /// <param name="propertyBufferRenderers">给出此VAO要管理的所有VBO。</param> public VertexArrayObject(IndexBufferPointerBase indexBufferRenderer, params BufferPointer[] propertyBufferRenderers) { if (indexBufferRenderer == null) { throw new ArgumentNullException("indexBufferRenderer"); } if (propertyBufferRenderers == null || propertyBufferRenderers.Length == 0) { throw new ArgumentNullException("propertyBuffers"); } this.indexBufferRenderer = indexBufferRenderer; this.bufferRenderers = propertyBufferRenderers; }
private void Dispose(bool disposing) { if (this.disposedValue == false) { if (disposing) { // Dispose managed resources. } // Dispose unmanaged resources. uint[] arrays = new uint[] { this.ID }; this.ID = 0; GL.DeleteVertexArrays(1, new uint[] { this.ID }); foreach (var item in this.bufferRenderers) { item.Dispose(); } this.indexBufferRenderer.Dispose(); this.bufferRenderers = null; this.indexBufferRenderer = null; } this.disposedValue = true; }