private void ResetGrid()
        {
            if (vertexBuffer != null)
            {
                vertexBuffer.Dispose();
            }

            vertexBuffer = new ExpandableVertexBuffer <ColorVertex>(device, PrimitiveType.LineList, Usage.None,
                                                                    VertexFormat.None, Pool.Managed);

            int iX = viewport.X % columnSpan;
            int iY = viewport.Y % rowSpan;

            int fX = viewport.Width;
            int fY = viewport.Height;

            int numOfColumns = viewport.Width / columnSpan;
            int numOfRows    = viewport.Height / rowSpan;

            var colVertices = new List <ColorVertex>(numOfColumns * 2);
            var rowVertices = new List <ColorVertex>(numOfRows * 2);

            int opacity = 255 - Transparency;

            for (int i = iX; i < fX; i += columnSpan)
            {
                var v0 = new ColorVertex();
                var v1 = new ColorVertex();

                v0.Position = new Vector4(i, 0, RenderingZOffset, 1.0f);
                v0.Color    = Color.FromArgb(opacity, color).ToArgb();

                v1.Position = new Vector4(i, viewport.Height, RenderingZOffset, 1.0f);
                v1.Color    = Color.FromArgb(opacity, color).ToArgb();

                colVertices.Add(v0);
                colVertices.Add(v1);
            }

            for (int i = iY; i < fY; i += rowSpan)
            {
                var v0 = new ColorVertex();
                var v1 = new ColorVertex();

                v0.Position = new Vector4(0, i, RenderingZOffset, 1.0f);
                v0.Color    = Color.FromArgb(opacity, color).ToArgb();

                v1.Position = new Vector4(viewport.Width, i, RenderingZOffset, 1.0f);
                v1.Color    = Color.FromArgb(opacity, color).ToArgb();

                rowVertices.Add(v0);
                rowVertices.Add(v1);
            }

            vertexBuffer.AddVertices(colVertices);
            vertexBuffer.AddVertices(rowVertices);
        }
        public static T[] ColorVertex <T>(Vector3[] positions) where T : struct
        {
            Vector4[] colors = GetColorsForBook();
            //Vector2[] textureCoord = GetTextureCoord();

            ColorVertex[] vertices = new ColorVertex[positions.Length];
            //from this array, make coresponding structure
            for (int i = 0; i < positions.Length; i++)
            {
                ColorVertex a = new ColorVertex();
                a.Position  = positions[i];
                a.Color     = colors[i];
                vertices[i] = a;
            }

            var y = (T[])Convert.ChangeType(vertices, typeof(T[]));

            return(y);
        }
Example #3
0
        public void Render()
        {
            if (IPoint == FPoint)
            {
                return;
            }

            // 1. Construct the four vertices of the selection box.
            ////

            int x      = IPoint.X;
            int y      = IPoint.Y;
            int width  = FPoint.X - IPoint.X;
            int height = FPoint.Y - IPoint.Y;

            var tLeft  = new ColorVertex(new Vector4(x, y, RenderingZOffset, 1.0f), color);
            var bLeft  = new ColorVertex(new Vector4(x, y + height, RenderingZOffset, 1.0f), color);
            var tRight = new ColorVertex(new Vector4(x + width, y, RenderingZOffset, 1.0f), color);
            var bRight = new ColorVertex(new Vector4(FPoint.X, FPoint.Y, RenderingZOffset, 1.0f), color);

            var points = new[] { tLeft, bLeft, tRight, bRight };

            // 2. Fill buffer.
            ////

            DataStream vstream = vertexBuffer.Lock(0, 0, LockFlags.Discard);

            vstream.WriteRange(points);
            vertexBuffer.Unlock();

            // 3. Set states and draw!
            ////

            device.SetTexture(0, null);

            device.VertexDeclaration = vertexDecl;
            device.Indices           = indexBuffer;
            device.SetStreamSource(0, vertexBuffer, 0, 20);

            device.DrawIndexedPrimitives(PrimitiveType.LineList, 0, 0, NumOfVertices, 0, 4);
        }