public static VertexBufferHandle CreateVertexBuffer(Vertex[] vertices, VertexLayout layout, BufferFlags flags = BufferFlags.None) { var memory = GetMemoryBufferReference(vertices); var vertex_buffer = Bgfx.create_vertex_buffer(memory, &layout.InternalHandle, (ushort)flags); return(vertex_buffer); }
static Vertex() { VertexLayout = new VertexLayout(); VertexLayout.Begin(); VertexLayout.Add(Attrib.Position, AttribType.Float, 3, false, false); VertexLayout.Add(Attrib.Color0, AttribType.Uint8, 4, true, false); VertexLayout.Add(Attrib.TexCoord0, AttribType.Float, 2, false, false); VertexLayout.End(); }
public static TransientVertexBuffer Create(Span <Vertex> vertices, VertexLayout layout) { var transient_vtx_buffer = new TransientVertexBuffer(vertices.Length, layout); var data_size = (uint)(vertices.Length * Unsafe.SizeOf <Vertex>()); Unsafe.CopyBlock((void *)transient_vtx_buffer.data, Unsafe.AsPointer(ref vertices[0]), data_size); return(transient_vtx_buffer); }
public static VertexBuffer Create(VertexPositionColorTexture[] vertices, VertexLayout layout, BufferFlags flags = BufferFlags.None) { var vertex_buffer = new VertexBuffer { Handle = GraphicsContext.CreateVertexBuffer(vertices, layout, flags) }; GraphicsContext.RegisterAllocatedResource(vertex_buffer); return(vertex_buffer); }
public static DynamicVertexBuffer Create(int vertex_count, VertexLayout layout, BufferFlags flags = BufferFlags.None) { var vertex_buffer = new DynamicVertexBuffer { Handle = GraphicsContext.CreateDynamicVertexBuffer(vertex_count, layout, flags) }; GraphicsContext.RegisterAllocatedResource(vertex_buffer); return(vertex_buffer); }
/// <summary> /// Gets the available space in the global transient vertex buffer. /// </summary> /// <param name="count">The number of vertices required.</param> /// <param name="layout">The layout of each vertex.</param> /// <returns>The number of available vertices.</returns> public static int GetAvailableSpace(int count, VertexLayout layout) { return((int)GraphicsContext.GetAvailableTransientVertexBuffers(count, layout)); }
/// <summary> /// Initializes a new instance of the <see cref="TransientVertexBuffer"/> struct. /// </summary> /// <param name="vertex_count">The number of vertices that fit in the buffer.</param> /// <param name="layout">The layout of the vertex data.</param> private TransientVertexBuffer(int vertex_count, VertexLayout layout) { GraphicsContext.AllocTransientVertexBuffer(out this, vertex_count, ref layout); }
public void SetVertexLayout(VertexLayout layout) { m_vertex_layout = layout; }
public static DynamicVertexBufferHandle CreateDynamicVertexBuffer(int vertex_count, VertexLayout layout, BufferFlags flags = BufferFlags.None) { var dyn_vertex_buffer = Bgfx.create_dynamic_vertex_buffer((uint)vertex_count, &layout.InternalHandle, (ushort)flags); return(dyn_vertex_buffer); }
public static int GetAvailableTransientVertexBuffers(int required_vertex_count, VertexLayout layout) { return((int)Bgfx.get_avail_transient_vertex_buffer((uint)required_vertex_count, ref layout.InternalHandle)); }
public static void AllocTransientVertexBuffer(out TransientVertexBuffer buffer, int vertex_count, ref VertexLayout layout) { Bgfx.alloc_transient_vertex_buffer(out buffer, (uint)vertex_count, ref layout.InternalHandle); }