Example #1
0
        public void Dispose()
        {
            if (vertexBuffer != null)
            {
                vertexBuffer.Dispose();
                GC.SuppressFinalize(vertexBuffer);
                vertexBuffer = null;
            }

            if (fallbackVertexBuffer != null)
            {
                fallbackVertexBuffer.Dispose();
                GC.SuppressFinalize(fallbackVertexBuffer);
                fallbackVertexBuffer = null;
            }

            if (spriteCornerVertexBuffer != null)
            {
                spriteCornerVertexBuffer.Dispose();
                GC.SuppressFinalize(spriteCornerVertexBuffer);
                spriteCornerVertexBuffer = null;
            }

            if (indexBuffer != null)
            {
                indexBuffer.Dispose();
                GC.SuppressFinalize(indexBuffer);
                indexBuffer = null;
            }
        }
Example #2
0
        private void createSpriteCornersBuffer(SharpDX.Direct3D11.Device device)
        {
            // Create the small buffer required when using instancing for point sprites

            var corners = new CompatibilityPointSpriteShader.CornerVertex[4];

            corners[0].corner        = 0x00000000;
            corners[1].corner        = 0xff00ff00;
            corners[2].corner        = 0xffffffff;
            corners[3].corner        = 0x00ff00ff;
            spriteCornerVertexBuffer = new GenVertexBuffer <CompatibilityPointSpriteShader.CornerVertex>(device, corners);
        }
Example #3
0
        private void createVertexBuffer(SharpDX.Direct3D11.Device device, TimeSeriesPointVertex[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer <TimeSeriesPointVertex>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer <TimeSeriesPointVertex>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var       expandedPoints   = new DownlevelTimeSeriesPointSpriteShader.Vertex[points.Length * verticesPerPoint];

                int index = 0;
                foreach (TimeSeriesPointVertex p in points)
                {
                    DownlevelTimeSeriesPointSpriteShader.Vertex xp;
                    xp.Position  = p.Position;
                    xp.color     = p.color;
                    xp.PointSize = p.PointSize;
                    xp.Tu        = p.Tu;
                    xp.Tv        = p.Tv;
                    xp.corner    = 0;

                    expandedPoints[index + 0]        = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1]        = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2]        = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3]        = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer <DownlevelTimeSeriesPointSpriteShader.Vertex>(device, expandedPoints);
            }
        }
Example #4
0
        private void createVertexBuffer(SharpDX.Direct3D11.Device device, PositionColorSize[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer <PositionColorSize>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer <PositionColorSize>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var       expandedPoints   = new CompatibilityPointSpriteShader.Vertex[points.Length * verticesPerPoint];

                int index = 0;
                foreach (PositionColorSize p in points)
                {
                    CompatibilityPointSpriteShader.Vertex xp;
                    xp.X      = p.X;
                    xp.Y      = p.Y;
                    xp.Z      = p.Z;
                    xp.color  = p.color;
                    xp.size   = p.size;
                    xp.corner = 0;

                    expandedPoints[index + 0]        = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1]        = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2]        = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3]        = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer <CompatibilityPointSpriteShader.Vertex>(device, expandedPoints);
            }
        }
Example #5
0
        private void createVertexBuffer(SharpDX.Direct3D11.Device device, KeplerVertex[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer <KeplerVertex>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer <KeplerVertex>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var       expandedPoints   = new KeplerVertex[points.Length * verticesPerPoint];

                int index = 0;
                foreach (KeplerVertex p in points)
                {
                    KeplerVertex xp;
                    xp        = p;
                    xp.corner = 0;

                    expandedPoints[index + 0]        = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1]        = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2]        = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3]        = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer <KeplerVertex>(device, expandedPoints);
            }
        }
        public void Dispose()
        {
            if (vertexBuffer != null)
            {
                vertexBuffer.Dispose();
                GC.SuppressFinalize(vertexBuffer);
                vertexBuffer = null;
            }

            if (tangentVertexBuffer != null)
            {
                tangentVertexBuffer.Dispose();
                GC.SuppressFinalize(tangentVertexBuffer);
                tangentVertexBuffer = null;
            }

            if (indexBuffer != null)
            {
                indexBuffer.Dispose();
                GC.SuppressFinalize(indexBuffer);
                indexBuffer = null;
            }
        }
        // Convert the vertex data to a GPU vertex buffer
        public void commitToDevice(SharpDX.Direct3D11.Device device)
        {
            if (vertices != null)
            {
                vertexBuffer = new GenVertexBuffer<PositionNormalTextured>(device, vertices);
            }
            else if (tangentVertices != null)
            {
                tangentVertexBuffer = new GenVertexBuffer<PositionNormalTexturedTangent>(device, tangentVertices);
            }

            indexBuffer = new IndexBuffer11(device, indices);
        }
        private void createVertexBuffer(Device device, TimeSeriesPointVertex[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer<TimeSeriesPointVertex>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer<TimeSeriesPointVertex>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var expandedPoints = new DownlevelTimeSeriesPointSpriteShader.Vertex[points.Length * verticesPerPoint];

                var index = 0;
                foreach (var p in points)
                {
                    DownlevelTimeSeriesPointSpriteShader.Vertex xp;
                    xp.Position = p.Position;
                    xp.color = p.color;
                    xp.PointSize = p.PointSize;
                    xp.Tu = p.Tu;
                    xp.Tv = p.Tv;
                    xp.corner = 0;

                    expandedPoints[index + 0] = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1] = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2] = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3] = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer<DownlevelTimeSeriesPointSpriteShader.Vertex>(device, expandedPoints);
            }
        }
        private void createVertexBuffer(Device device, PositionColorSize[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer<PositionColorSize>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer<PositionColorSize>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var expandedPoints = new CompatibilityPointSpriteShader.Vertex[points.Length * verticesPerPoint];

                var index = 0;
                foreach (var p in points)
                {
                    CompatibilityPointSpriteShader.Vertex xp;
                    xp.X = p.X;
                    xp.Y = p.Y;
                    xp.Z = p.Z;
                    xp.color = p.color;
                    xp.size = p.size;
                    xp.corner = 0;

                    expandedPoints[index + 0] = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1] = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2] = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3] = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer<CompatibilityPointSpriteShader.Vertex>(device, expandedPoints);
            }
        }
        private void createVertexBuffer(Device device, KeplerVertex[] points)
        {
            if (renderStrategy == RenderStrategy.GeometryShader)
            {
                vertexBuffer = new GenVertexBuffer<KeplerVertex>(device, points);
            }
            else if (renderStrategy == RenderStrategy.Instanced)
            {
                vertexBuffer = new GenVertexBuffer<KeplerVertex>(device, points);
            }
            else
            {
                const int verticesPerPoint = 4;
                var expandedPoints = new KeplerVertex[points.Length * verticesPerPoint];

                var index = 0;
                foreach (var p in points)
                {
                    KeplerVertex xp;
                    xp = p;
                    xp.corner = 0;

                    expandedPoints[index + 0] = xp;
                    expandedPoints[index + 0].corner = 0x00000000;
                    expandedPoints[index + 1] = xp;
                    expandedPoints[index + 1].corner = 0xff00ff00;
                    expandedPoints[index + 2] = xp;
                    expandedPoints[index + 2].corner = 0xffffffff;
                    expandedPoints[index + 3] = xp;
                    expandedPoints[index + 3].corner = 0x00ff00ff;

                    index += verticesPerPoint;
                }

                fallbackVertexBuffer = new GenVertexBuffer<KeplerVertex>(device, expandedPoints);
            }
        }
        private void createSpriteCornersBuffer(Device device)
        {
            // Create the small buffer required when using instancing for point sprites

            var corners = new CompatibilityPointSpriteShader.CornerVertex[4];
            corners[0].corner = 0x00000000;
            corners[1].corner = 0xff00ff00;
            corners[2].corner = 0xffffffff;
            corners[3].corner = 0x00ff00ff;
            spriteCornerVertexBuffer = new GenVertexBuffer<CompatibilityPointSpriteShader.CornerVertex>(device, corners);
        }
        public void Dispose()
        {
            if (vertexBuffer != null)
            {
                vertexBuffer.Dispose();
                GC.SuppressFinalize(vertexBuffer);
                vertexBuffer = null;
            }

            if (fallbackVertexBuffer != null)
            {
                fallbackVertexBuffer.Dispose();
                GC.SuppressFinalize(fallbackVertexBuffer);
                fallbackVertexBuffer = null;
            }

            if (spriteCornerVertexBuffer != null)
            {
                spriteCornerVertexBuffer.Dispose();
                GC.SuppressFinalize(spriteCornerVertexBuffer);
                spriteCornerVertexBuffer = null;
            }

            if (indexBuffer != null)
            {
                indexBuffer.Dispose();
                GC.SuppressFinalize(indexBuffer);
                indexBuffer = null;
            }
        }
Example #13
0
        private void updateVertexBuffer()
        {
            if (vertexBuffer == null)
            {
                transferBuffer = new Vector4[pointCount];
                vertexBuffer = new GenVertexBuffer<Vector4>(RenderContext11.PrepDevice, transferBuffer);
            }

            var t0 = points[0].jd;

            // Convert to single precision
            for (uint i = 0; i < pointCount; ++i)
            {
                var pathPoint = points[i];
                transferBuffer[i] = new Vector4((float)pathPoint.position.X,
                                                        (float)pathPoint.position.Y,
                                                        (float)pathPoint.position.Z,
                                                        (float)((t0 - pathPoint.jd) / coverageDuration));
            }

            vertexBuffer.Update(transferBuffer);
        }