Exemple #1
0
        /// <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;
        }
Exemple #2
0
        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;
        }