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; } }
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); }
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); } }
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); } }
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); }
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); }