internal void DrawTextured(RenderContext renderContext, Texture texture, float opacity) { InitBuffer(renderContext); foreach (TimeSeriesPointVertexBuffer pointBuffer in pointBuffers) { TimeSeriesPointSpriteShader.Use( renderContext, pointBuffer.VertexBuffer, texture.Texture2d, Color.FromArgb(255 * opacity, 255, 255, 255), DepthBuffered, (float)(this.JNow), (float)Decay, renderContext.CameraPosition, (float)(scale * (renderContext.Height / 960)), MinSize ); renderContext.gl.drawArrays(GL.POINTS, 0, pointBuffer.Count); } }
public void DrawTextured(RenderContext renderContext, WebGLTexture texture, float opacity) { InitBuffer(renderContext); Vector3d zero = new Vector3d(); Matrix3d matInv = Matrix3d.MultiplyMatrix(renderContext.World, renderContext.View); matInv.Invert(); Vector3d cam = Vector3d.TransformCoordinate(zero, matInv); foreach (TimeSeriesPointVertexBuffer pointBuffer in pointBuffers) { TimeSeriesPointSpriteShader.Use( renderContext, pointBuffer.VertexBuffer, texture, Color.FromArgb(255 * opacity, 255, 255, 255), DepthBuffered, (float)(this.JNow), (float)Decay, cam, (float)(scale * (renderContext.Height / 960)), MinSize, ShowFarSide, Sky ); renderContext.gl.drawArrays(GL.POINTS, 0, pointBuffer.Count); } }
public void Draw(RenderContext renderContext, float opacity, bool cull) { InitBuffer(renderContext); if (renderContext.gl == null) { if (!imageReady) { return; } renderContext.Device.Save(); renderContext.WVP.ProjectArrayToScreen(worldList, transformedList); CanvasContext2D ctx = renderContext.Device; ctx.Alpha = .4; double width = renderContext.Width; double height = renderContext.Height; Vector3d viewPoint = Vector3d.MakeCopy(renderContext.ViewPoint); double scaleFactor = renderContext.FovScale / 100; foreach (DataItem item in items) { // todo filter by date // if (Vector3d.Dot(viewPoint, item.Location) < 0) if (item.Tranformed.Z < 1) { double x = item.Tranformed.X; double y = item.Tranformed.Y; double size = .1 * item.Size / scaleFactor; double half = size / 2; if (x > -half && x < width + half && y > -half && y < height + half) { //ctx.DrawImage(starProfile, x - size / 2, y - size / 2, size, size); ctx.BeginPath(); // ctx.FillStyle = "rgb(200,0,0)"; ctx.FillStyle = item.Color.ToFormat(); ctx.Arc(x, y, size, 0, Math.PI * 2, true); ctx.Fill(); } } } renderContext.Device.Restore(); } else { Vector3d zero = new Vector3d(); Matrix3d matInv = Matrix3d.MultiplyMatrix(renderContext.World, renderContext.View); matInv.Invert(); Vector3d cam = Vector3d.TransformCoordinate(zero, matInv); foreach (TimeSeriesPointVertexBuffer pointBuffer in pointBuffers) { TimeSeriesPointSpriteShader.Use( renderContext, pointBuffer.VertexBuffer, starTexture.Texture2d, Color.FromArgb(255 * opacity, 255, 255, 255), DepthBuffered, (float)(this.JNow), this.TimeSeries ? (float)Decay : 0, cam, (float)(scale * (renderContext.Height / 960)), MinSize, ShowFarSide, Sky ); renderContext.gl.drawArrays(GL.POINTS, 0, pointBuffer.Count); } // renderContext.gl.disable(0x8642); } }