public void LoadDemo(Mini.DemoBase demo) { this.demo = demo; demo.Init(); int max = Math.Max(w, h); demo.Width = w; demo.Height = h; GLRenderSurface glsx; GLPainter canvasPainter; demo.BuildCustomDemoGLContext(out glsx, out canvasPainter); if (glsx == null) { //if demo not create canvas and painter //the we create for it //int max = Math.Max(w, h); //canvas2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(max, max); //canvasPainter = new GLCanvasPainter(canvas2d, max, max); //canvas2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(w, h); glsx = PixelFarm.Drawing.GLES2.GLES2Platform.CreateGLRenderSurface(max, max, w, h); canvasPainter = new GLPainter(glsx); //create text printer for opengl //---------------------- //1. win gdi based //var printer = new WinGdiFontPrinter(canvas2d, w, h); //canvasPainter.TextPrinter = printer; //---------------------- //2. raw vxs //var printer = new PixelFarm.Drawing.Fonts.VxsTextPrinter(canvasPainter); //canvasPainter.TextPrinter = printer; //---------------------- //3. agg texture based font texture //var printer = new AggFontPrinter(canvasPainter, w, h); //canvasPainter.TextPrinter = printer; //---------------------- //4. texture atlas based font texture //------------ //resolve request font //var printer = new GLBmpGlyphTextPrinter(canvasPainter, YourImplementation.BootStrapWinGdi.myFontLoader); //canvasPainter.TextPrinter = printer; if (_getTextPrinterDel != null) { _getTextPrinterDel(canvasPainter); } } demo.SetEssentialGLHandlers( () => { }, () => IntPtr.Zero, () => IntPtr.Zero); DemoBase.InvokeGLContextReady(demo, glsx, canvasPainter); DemoBase.InvokePainterReady(demo, canvasPainter); }
public void LoadSample(DemoBase demobase) { this.demobase = demobase; //1. //note:when we init, //no glcanvas/ painter are created demobase.Init(); //----------------------------------------------- //2. check if demo will create canvas/painter context //or let this GLDemoContext create for it hh1 = glControl.Handle; //ensure that contrl handler is created glControl.MakeCurrent(); demobase.BuildCustomDemoGLContext(out this._glsx, out this.canvasPainter); // if (this._glsx == null) { //if demo not create canvas and painter //the we create for it int max = Math.Max(glControl.Width, glControl.Height); _glsx = PixelFarm.Drawing.GLES2.GLES2Platform.CreateGLRenderSurface(max, max, glControl.Width, glControl.Height); _glsx.SmoothMode = SmoothMode.Smooth;//set anti-alias canvasPainter = new GLPainter(_glsx); //create text printer for opengl //---------------------- //1. win gdi based //var printer = new WinGdiFontPrinter(_glsx, glControl.Width, glControl.Height); //canvasPainter.TextPrinter = printer; //---------------------- //2. raw vxs //var openFontStore = new Typography.TextServices.OpenFontStore(); //var printer = new PixelFarm.Drawing.Fonts.VxsTextPrinter(canvasPainter,openFontStore); //canvasPainter.TextPrinter = printer; //---------------------- //3. agg texture based font texture //var printer = new AggTextSpanPrinter(canvasPainter, glControl.Width, 30); //canvasPainter.TextPrinter = printer; //---------------------- //4. texture atlas based font texture //------------ //resolve request font var printer = new GLBitmapGlyphTextPrinter(canvasPainter, PixelFarm.Drawing.GLES2.GLES2Platform.TextService); canvasPainter.TextPrinter = printer; //var openFontStore = new Typography.TextServices.OpenFontStore(); //var printer = new GLBmpGlyphTextPrinter(canvasPainter, openFontStore); //canvasPainter.TextPrinter = printer; } //----------------------------------------------- demobase.SetEssentialGLHandlers( () => this.glControl.SwapBuffers(), () => this.glControl.GetEglDisplay(), () => this.glControl.GetEglSurface() ); //----------------------------------------------- this.glControl.SetGLPaintHandler((s, e) => { demobase.InvokeGLPaint(); }); DemoBase.InvokeGLContextReady(demobase, this._glsx, this.canvasPainter); DemoBase.InvokePainterReady(demobase, this.canvasPainter); }