From 42776d34ef4b1a3604374fe598329bb300dfd845 Mon Sep 17 00:00:00 2001 From: Diego Settimi Date: Fri, 7 Jun 2024 16:02:11 +0200 Subject: [PATCH] Enable hardware acceleration --- LaserGRBL/PreviewForm.cs | 11 ++++------- LaserGRBL/UsageStats.cs | 5 +++++ LaserGRBL/UserControls/GrblPanel.cs | 6 +++++- LaserGRBL/UserControls/GrblPanel3D.cs | 25 ++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/LaserGRBL/PreviewForm.cs b/LaserGRBL/PreviewForm.cs index 97e6cc39..8fb223b0 100644 --- a/LaserGRBL/PreviewForm.cs +++ b/LaserGRBL/PreviewForm.cs @@ -26,7 +26,7 @@ public partial class PreviewForm : System.Windows.Forms.UserControl public PreviewForm() { InitializeComponent(); - CreatePanel(Settings.LegacyPreview); + CreatePanel(); CustomButtonArea.OrderChanged += CustomButtonArea_OrderChanged; IconsMgr.PrepareButton(BtnReset, "custom-reset"); IconsMgr.PrepareButton(BtnUnlock, "custom-unlock"); @@ -60,21 +60,18 @@ public PreviewForm() } } - private void CreatePanel(bool isLegacy) + private void CreatePanel() { if (GrblPanel != null) { tableLayoutPanel1.Controls.Remove(GrblPanel as Control); (GrblPanel as Control).Dispose(); } - if (isLegacy) - { + if (Settings.LegacyPreview) GrblPanel = new GrblPanel(); - } else - { GrblPanel = new GrblPanel3D(); - } + if (mCore != null) GrblPanel.SetCore(mCore); (GrblPanel as Control).Dock = DockStyle.Fill; tableLayoutPanel1.Controls.Add(GrblPanel as Control); diff --git a/LaserGRBL/UsageStats.cs b/LaserGRBL/UsageStats.cs index 54ca06da..20e537f3 100644 --- a/LaserGRBL/UsageStats.cs +++ b/LaserGRBL/UsageStats.cs @@ -12,6 +12,7 @@ using System.Net; using System.Runtime.Serialization; using System.Linq; +using LaserGRBL.UserControls; namespace LaserGRBL { @@ -224,6 +225,10 @@ private bool TrueSend() { "bitflag", Tools.OSHelper.GetBitFlag().ToString() }, { "vendor", VendorString }, { "fPassthrough", Counters.Passthrough.ToString() }, + { "RenderType", GrblPanel3D.CurrentRendererType }, + { "RenderVendor", GrblPanel3D.CurrentVendor }, + { "RenderName", GrblPanel3D.CurrentRenderer }, + { "RenderGLVersion", GrblPanel3D.CurrentGLVersion }, }; // client.UploadValues returns page's source as byte array (byte[]) so it must be transformed into a string diff --git a/LaserGRBL/UserControls/GrblPanel.cs b/LaserGRBL/UserControls/GrblPanel.cs index 3283c0cc..ef5c5b3e 100644 --- a/LaserGRBL/UserControls/GrblPanel.cs +++ b/LaserGRBL/UserControls/GrblPanel.cs @@ -9,6 +9,7 @@ using System.Drawing.Drawing2D; using System.Windows.Forms; using LaserGRBL; +using SharpGL; namespace LaserGRBL.UserControls { @@ -27,7 +28,10 @@ public partial class GrblPanel : UserControl, IGrblPanel public GrblPanel() { InitializeComponent(); - + GrblPanel3D.CurrentRendererType = "GDI+"; + GrblPanel3D.CurrentVendor = "LaserGRBL"; + GrblPanel3D.CurrentRenderer = "Legacy Preview"; + Logger.LogMessage("OpenGL", "{0} {1}, {2}", GrblPanel3D.CurrentRendererType, GrblPanel3D.CurrentVendor, GrblPanel3D.CurrentRenderer); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); diff --git a/LaserGRBL/UserControls/GrblPanel3D.cs b/LaserGRBL/UserControls/GrblPanel3D.cs index e0956190..d5c16ed3 100644 --- a/LaserGRBL/UserControls/GrblPanel3D.cs +++ b/LaserGRBL/UserControls/GrblPanel3D.cs @@ -82,6 +82,11 @@ public partial class GrblPanel3D : UserControl, IGrblPanel private Exception FatalException; + public static string CurrentRendererType = ""; + public static string CurrentVendor = ""; + public static string CurrentRenderer = ""; + public static string CurrentGLVersion = ""; + public GrblPanel3D() { InitializeComponent(); @@ -121,6 +126,7 @@ private void GlThread() } catch (Exception ex) { + Logger.LogException("OpenGL", ex); FatalException = ex; Invalidate(); ExceptionManager.OnHandledException(ex, true); @@ -192,7 +198,24 @@ protected void InitializeOpenGL() { object parameter = null; OpenGL = new OpenGL(); - OpenGL.Create(OpenGLVersion.OpenGL2_1, RenderContextType.DIBSection, Width, Height, 32, parameter); + + try + { + CurrentRendererType = "FBO"; + OpenGL.Create(OpenGLVersion.OpenGL2_1, RenderContextType.FBO, Width, Height, 32, parameter); + } + catch + { + CurrentRendererType = "DIB"; + OpenGL.Create(OpenGLVersion.OpenGL2_1, RenderContextType.DIBSection, Width, Height, 32, parameter); + } + + try { CurrentVendor = OpenGL.Vendor; } catch { CurrentVendor = "Unknown"; } + try { CurrentRenderer = OpenGL.Renderer; } catch { CurrentRenderer = "Unknown"; } + try { CurrentGLVersion = OpenGL.Version; } catch { CurrentGLVersion = "0.0"; } + + Logger.LogMessage("OpenGL", "{0} OpenGL {1}, {2}, {3}", CurrentRendererType, CurrentGLVersion, CurrentVendor, CurrentRenderer); + OpenGL.ShadeModel(OpenGL.GL_SMOOTH); OpenGL.ClearColor(0.0f, 0.0f, 0.0f, 0.0f); OpenGL.ClearDepth(1.0f);