public override void SetDynamicVbData(int vb, IntPtr vertices, int count) { int size = count * batchStride; IntPtr buffer = vBuffers[vb]; DataBuffser.SetData(buffer, vertices, size, LockFlags.Discard); Device.SetStreamSource(device, 0, buffer, 0, batchStride); }
public override int CreateIb(IntPtr indices, int indicesCount) { int size = indicesCount * sizeof(ushort); IntPtr buffer = Device.CreateIndexBuffer(device, size, Usage.WriteOnly, Format.Index16, Pool.Default); DataBuffser.SetData(buffer, indices, size, LockFlags.None); return(GetOrExpand(ref iBuffers, buffer, iBufferSize)); }
public override int CreateVb(IntPtr vertices, VertexFormat format, int count) { int size = count * strideSizes[(int)format]; IntPtr buffer = Device.CreateVertexBuffer(device, size, Usage.WriteOnly, formatMapping[(int)format], Pool.Default); DataBuffser.SetData(buffer, vertices, size, LockFlags.None); return(GetOrExpand(ref vBuffers, buffer, vBufferSize)); }
public override int CreateVb(IntPtr vertices, VertexFormat format, int count) { int size = count * strideSizes[(int)format]; IntPtr buffer = IntPtr.Zero; for (;;) { int res = Device.CreateVertexBuffer(device, size, Usage.WriteOnly, formatMapping[(int)format], Pool.Default, &buffer); if (res >= 0) { break; } if (res != (int)Direct3DError.OutOfVideoMemory) { throw new SharpDXException(res); } Events.RaiseLowVRAMDetected(); } DataBuffser.SetData(buffer, vertices, size, LockFlags.None); return(GetOrExpand(ref vBuffers, buffer, vBufferSize)); }