public void Renderer() { MyAsyncRenderContext aRC = this; RenderWindow rw = aRC.RenderWindow; if (null != rw) { Size size = rw.Size(); using (RenderWindow.Channel channel = rw.OpenChannel(Rhino.Render.RenderWindow.StandardChannels.RGBA)) { for (int x = 0; x < size.Width; x++) { for (int y = 0; y < size.Height; y++) { Rhino.Display.Color4f color = new Rhino.Display.Color4f(y / (float)size.Width, x / (float)size.Height, 1.0f, 1.0f); channel.SetValue(x, y, color); rw.Invalidate(); Thread.Sleep(0); } float progress = x / (float)size.Width; rw.SetProgress(String.Format("Rendering C# rendering {0:d}% complete", (int)(progress * 100.0f)), progress); Thread.Sleep(1); if (aRC.CancelRender) { break; } } rw.SetProgress("Rendering complete", 1.0f); Thread.Sleep(10); } rw.EndAsyncRender(RenderWindow.RenderSuccessCode.Completed); } }
protected override Result Render(RhinoDoc doc, RunMode mode, bool fastPreview) { AsyncRenderContext aRC = new MyAsyncRenderContext(); RenderPipeline pipe = new MyRenderPipeline(doc, mode, this, ref aRC); ((MyAsyncRenderContext)aRC).RenderWindow = pipe.GetRenderWindow(); ((MyAsyncRenderContext)aRC).RenderWindow.SetSize(RenderPipeline.RenderSize(doc)); RenderPipeline.RenderReturnCode rc = pipe.Render(); if (RenderPipeline.RenderReturnCode.Ok != rc) { RhinoApp.WriteLine("Render start failed:" + rc.ToString()); } else { RhinoApp.WriteLine("Rendering started!", (int)rc); } return(Rhino.Commands.Result.Success); }
public MyRenderPipeline(RhinoDoc doc, Rhino.Commands.RunMode mode, Rhino.PlugIns.RenderPlugIn plugin, ref AsyncRenderContext aRC) : base(doc, mode, plugin, RenderPipeline.RenderSize(doc), "RdkTest", Rhino.Render.RenderWindow.StandardChannels.RGBA, false, false, ref aRC) { m_asyncRenderContext = (MyAsyncRenderContext)aRC; }