コード例 #1
0
ファイル: GraphicsContext.cs プロジェクト: parhelia512/OMEGA
        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);
        }
コード例 #2
0
 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();
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 /// <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));
 }
コード例 #7
0
 /// <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);
 }
コード例 #8
0
ファイル: VertexStream.cs プロジェクト: parhelia512/OMEGA
 public void SetVertexLayout(VertexLayout layout)
 {
     m_vertex_layout = layout;
 }
コード例 #9
0
ファイル: GraphicsContext.cs プロジェクト: parhelia512/OMEGA
        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);
        }
コード例 #10
0
ファイル: GraphicsContext.cs プロジェクト: parhelia512/OMEGA
 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));
 }
コード例 #11
0
ファイル: GraphicsContext.cs プロジェクト: parhelia512/OMEGA
 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);
 }