コード例 #1
0
        void layoutBuffers(Span <sDrawCall> drawCallsSpan)
        {
            buffersLayout.clear();

            for (int i = 0; i < drawCallsSpan.Length; i++)
            {
                ref var dc = ref drawCallsSpan[i];
                int     sn = dc.order.sn;

                if (sn >= 0)
                {
                    buffersLayout.addMesh(i, drawMeshes.meshes[sn].mesh.meshInfo);
                    continue;
                }
                sn = -sn - 1;

                if (dc.drawCall.mesh == eMesh.SpriteRectangle)
                {
                    sMeshDataSize mds = new sMeshDataSize(SpriteMesh.countVertices, SpriteMesh.countTriangles);
                    buffersLayout.addTransparent(i, ref mds);
                    continue;
                }

                if (dc.drawCall.isText)
                {
                    // Glyph runs can be either opaque or transparent, depending on text background
                    sMeshDataSize mds = drawMeshes.textCommands[sn].meshDataSize;
                    buffersLayout.addTransparent(i, ref mds);
                    continue;
                }

                sDrawRectCommand cmd = drawMeshes.rectCommands[sn];
                sMeshDataSize    size;
                if (cmd.strokeWidth.HasValue)
                {
                    size = RectangleMesh.sizeStroked;
                }
                else
                {
                    size = RectangleMesh.sizeFilled;
                }
                buffersLayout.addOpaque(i, ref size);
            }
コード例 #2
0
        /// <summary>Creates a D2D mesh from a pair of readonly spans</summary>
        public static id2Mesh createMesh(this iDrawDevice device, ReadOnlySpan <Vector2> vertices, ReadOnlySpan <ushort> indices)
        {
            sMeshDataSize mds = new sMeshDataSize(vertices.Length, indices.Length / 3);

            return(device.createMesh(ref MemoryMarshal.GetReference(vertices), ref MemoryMarshal.GetReference(indices), mds));
        }