void clearAndClip(vkvg.Context ctx) { ctx.ClipPreserve(); ctx.Operator = vkvg.Operator.Clear; ctx.Fill(); ctx.Operator = vkvg.Operator.Over; }
void vkvgDraw() { using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) { ctx.Operator = vkvg.Operator.Clear; ctx.Paint(); ctx.Operator = vkvg.Operator.Over; ctx.LineWidth = 1; ctx.SetSource(0.1, 0.1, 0.1, 0.3); ctx.Rectangle(5.5, 5.5, 400, 250); ctx.FillPreserve(); ctx.Flush(); ctx.SetSource(0.8, 0.8, 0.8); ctx.Stroke(); ctx.FontFace = "mono"; ctx.FontSize = 10; int x = 16; int y = 40, dy = 16; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"fps: {fps,5} ")); ctx.MoveTo(x + 200, y - 0.5); ctx.Rectangle(x + 200, y - 8.5, 0.1 * fps, 10); ctx.SetSource(0.1, 0.9, 0.1); ctx.Fill(); ctx.SetSource(0.8, 0.8, 0.8); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"Exposure:{matrices.exposure,5} ")); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"Gamma: {matrices.gamma,5} ")); if (results == null) { return; } y += dy * 2; ctx.MoveTo(x, y); ctx.ShowText("Pipeline Statistics"); ctx.MoveTo(x - 2, 2.5 + y); ctx.LineTo(x + 160, 2.5 + y); ctx.Stroke(); y += 4; x += 20; for (int i = 0; i < statPool.RequestedStats.Length; i++) { y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} ")); } y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} ")); } }
void recurseDraw(vkvg.Context ctx, int step) { step++; ctx.SetSource(1.0, 0.0, 0.0); ctx.FontFace = "droid"; ctx.FontSize = 10; ctx.Save(); ctx.Translate(20, 20); ctx.Rectangle(step, step, 600, 600); ctx.ClipPreserve(); ctx.SetSource(1f / step, 1f / step, 1f / step); ctx.FillPreserve(); ctx.SetSource(0, 0, 0); ctx.Stroke(); if (step < 5) { recurseDraw(ctx, step); } ctx.Restore(); ctx.Rectangle(step + 50, step + 1, 100, 12); ctx.Operator = vkvg.Operator.Clear; ctx.Fill(); ctx.Operator = vkvg.Operator.Over; ctx.SetSource(1.0, 0.0, 0.0); ctx.MoveTo(step + 30, step + 12); ctx.ShowText($"fps: {fps}"); ctx.Operator = vkvg.Operator.Clear; ctx.Rectangle(step, step, 20, 20); ctx.Fill(); ctx.Operator = vkvg.Operator.Over; ctx.SetSource(1f / step, 0f, 0f); ctx.Rectangle(step + 2, step + 2, 16, 16); ctx.Fill(); }
//void vkvgDrawSVG () { // using (vkvg.Surface svgSurf = new vkvg.Surface (vkvgDev, 300, 300)) { // using (vkvg.Context ctx = new vkvg.Context (svgSurf)) { // IntPtr nsvg = IntPtr.Zero; // using (Stream nsvgStream = Crow.Interface.StaticGetStreamFromPath ("../../../samples/data/tiger.svg")) { // using (StreamReader sr = new StreamReader (nsvgStream)) { // nsvg = vkvgDev.LoadSvgFragment (sr.ReadToEnd ()); // } // } // ctx.SetSource (0.8f, 0.8f, 0.8f); // ctx.Paint (); // ctx.Scale (0.2f, 0.2f); // ctx.RenderSvg (nsvg, null); // vkvgDev.DestroySvg (nsvg); // } // //svgSurf.WriteToPng ("/mnt/data/test.png"); // using (vkvg.Context ctx = new vkvg.Context (vkvgSurf)) { // ctx.SetSourceSurface (svgSurf, 0, 0); // ctx.Paint (); // } // } //} #region fps print void vkvgDraw1() { using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) { //ctx.SetSource (1.0, 0.1, 0.1, 0.2); //ctx.Paint (); //ctx.Rectangle (50, 50, 200, 200); //ctx.Rectangle (50, 50, 250, 250); //clearAndClip (ctx); ////ctx.Rectangle (60, 60, 200, 200); ////clearAndClip (ctx); //ctx.LineWidth = 1; //ctx.SetSource (1.0, 0.1, 0.1, 0.2); //ctx.Rectangle (5.5, 5.5, 400, 250); //ctx.FillPreserve (); //ctx.Flush (); ctx.SetSource(0.8, 0.8, 0.8); //ctx.Stroke (); ctx.FontFace = "mono"; ctx.FontSize = 8; int x = 10; int y = 10, dy = 14; for (int j = 0; j < 10; j++) { for (int i = 0; i < 50; i++) { ctx.Save(); string text = string.Format($"fps: {fps,5}"); vkvg.TextExtents te = ctx.TextExtents(text); vkvg.FontExtents fe = ctx.FontExtents; ctx.Rectangle(x, y, te.XAdvance + 1.0f, fe.Height); clearAndClip(ctx); ctx.SetSource(0.1, 0.2, 0.8); ctx.Fill(); ctx.SetSource(0.8, 0.8, 0.8); ctx.MoveTo(x, (float)y + fe.Ascent); ctx.ShowText(text); y += dy; ctx.Restore(); } ctx.Flush(); x += 100; y = 10; } } }
public override void Update() { if (paused) { return; } using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) { ctx.Clear(); for (int i = 0; i < iterations; i++) { float x = 0.8f * (float)(rnd.NextDouble() * Width); float y = 0.8f * (float)(rnd.NextDouble() * Height); float w = 0.2f * (float)(rnd.NextDouble() * Width); float h = 0.2f * (float)(rnd.NextDouble() * Height); randomize_color(ctx); ctx.Rectangle(x, y, w, h); ctx.Fill(); } } }
public override void Update() { using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) { ctx.Clear(); for (int i = 0; i < iterations; i++) { float x = (float)(rnd.NextDouble() * Width); float y = (float)(rnd.NextDouble() * Height); float r = 0.2f * (float)(rnd.NextDouble() * Width) + 1.0f; randomize_color(ctx); ctx.Arc(x, y, r, 0, 2.0f * Math.PI); ctx.Fill(); if (i % 50 == 0) { ctx.Flush(); } } } }
void vkvgDraw() { using (vkvg.Context ctx = new vkvg.Context(vkvgSurf)) { ctx.Operator = vkvg.Operator.Clear; ctx.Paint(); ctx.Operator = vkvg.Operator.Over; ctx.LineWidth = 1; ctx.SetSource(0.1, 0.1, 0.1, 0.8); ctx.Rectangle(5.5, 5.5, 320, 300); ctx.FillPreserve(); ctx.Flush(); ctx.SetSource(0.8, 0.8, 0.8); ctx.Stroke(); ctx.FontFace = "mono"; ctx.FontSize = 8; int x = 16; int y = 40, dy = 16; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"fps: {fps,5} ")); ctx.MoveTo(x + 200, y - 0.5); ctx.Rectangle(x + 200, y - 8.5, 0.1 * fps, 10); ctx.SetSource(0.1, 0.9, 0.1); ctx.Fill(); ctx.SetSource(0.8, 0.8, 0.8); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"Exposure:{pbrPipeline.matrices.exposure,5} ")); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"Gamma: {pbrPipeline.matrices.gamma,5} ")); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"Light pos: {lightPos.ToString()} ")); #if PIPELINE_STATS if (results == null) { return; } y += dy * 2; ctx.MoveTo(x, y); ctx.ShowText("Pipeline Statistics"); ctx.MoveTo(x - 2, 4.5 + y); ctx.LineTo(x + 160, 4.5 + y); ctx.Stroke(); y += 4; x += 20; for (int i = 0; i < statPool.RequestedStats.Length; i++) { y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} ")); } /*y += dy; * ctx.MoveTo (x, y); * ctx.ShowText (string.Format ($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} "));*/ #endif y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{"Debug draw (numpad 0->6)",-30} : {currentDebugView.ToString ()} ")); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{"Debug Prefil Face: (f)",-30} : {pbrPipeline.envCube.debugFace.ToString ()} ")); y += dy; ctx.MoveTo(x, y); ctx.ShowText(string.Format($"{"Debug Prefil Mip: (m)",-30} : {pbrPipeline.envCube.debugMip.ToString ()} ")); } }