private void init(DisposableI parent, BufferLayoutDescI bufferLayoutDesc, BufferUsages bufferUsage, VertexBufferTopologys vertexBufferTopology, float[] vertices, int[] indices) { try { video = parent.FindParentOrSelfWithException<Video>(); Topology = vertexBufferTopology; bufferLayout = new BufferLayout(this, null, bufferLayoutDesc, true); vertexBuffer = new X.VertexBuffer(video.Device, bufferLayout.layout, vertexCount, X.BufferUsage.WriteOnly); Update(vertices, vertexCount); if (indices != null && indices.Length != 0) indexBuffer = new IndexBuffer(this, usage, indices); } catch (Exception e) { Dispose(); throw e; } }
private void enable(IndexBufferI indexBuffer, VertexBufferI instanceBuffer) { if (instanceBuffer == null) { video.Device.SetVertexBuffer(vertexBuffer); instanceBuffer = null; } else { this.instanceBuffer = (VertexBuffer)instanceBuffer; } if (indexBuffer == null) { video.Device.Indices = null; indexBuffer = null; } else { this.currentIndexBuffer = (IndexBuffer)indexBuffer; this.currentIndexBuffer.enable(); } }