diff --git a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Camera/Camera.vb b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Camera/Camera.vb index e0e25e7..8d56858 100644 --- a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Camera/Camera.vb +++ b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Camera/Camera.vb @@ -1,5 +1,7 @@ Imports System.Windows.Forms + Imports OpenTK +Imports OpenTK.Mathematics Namespace CameraN diff --git a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj index 300d770..73052e8 100644 --- a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj +++ b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj @@ -2,6 +2,8 @@ Windows net5.0-windows7.0 + true + true 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 Pilz.Drawing.Drawing3D.OpenGLFactory.xml true @@ -25,12 +27,12 @@ On + - - + diff --git a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Preview/ModelPreview.vb b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Preview/ModelPreview.vb index a973f11..9994940 100644 --- a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Preview/ModelPreview.vb +++ b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Preview/ModelPreview.vb @@ -6,16 +6,17 @@ Imports OpenTK Imports OpenTK.Graphics.OpenGL Imports Pilz.S3DFileParser Imports Point = System.Drawing.Point -Imports KeyboardState = OpenTK.Input.KeyboardState -Imports Keyboard = OpenTK.Input.Keyboard -Imports Key = OpenTK.Input.Key Imports Color = System.Drawing.Color +Imports System.Windows.Forms.Integration +Imports OpenTK.Mathematics +Imports System.Windows.Input Namespace PreviewN Public Class ModelPreview - Private WithEvents glControl1 As GLControl + Private WithEvents glControl1 As Wpf.GLWpfControl + Private WithEvents glControlHost As ElementHost Private WithEvents MyCamera As New Camera Private ProjMatrix As Matrix4 = Nothing Private FOV As Single = 1.048F @@ -75,21 +76,19 @@ Namespace PreviewN Public ReadOnly Property GLControl As Control Get - Return glControl1 + Return glControlHost End Get End Property Private ReadOnly Property IsStrgPressed As Boolean Get - Dim state As KeyboardState = Keyboard.GetState() - Return state(Key.ControlLeft) OrElse state(Key.ControlRight) + Return Keyboard.IsKeyDown(Key.LeftCtrl) OrElse Keyboard.IsKeyDown(Key.RightCtrl) End Get End Property Private ReadOnly Property IsShiftPressed As Boolean Get - Dim state As KeyboardState = Keyboard.GetState() - Return state(Key.ShiftLeft) OrElse state(Key.ShiftRight) + Return Keyboard.IsKeyDown(Key.LeftShift) OrElse Keyboard.IsKeyDown(Key.RightShift) End Get End Property @@ -99,7 +98,7 @@ Namespace PreviewN End Get Set(value As Boolean) _isMouseDown = value - glControl1.Refresh() + glControlHost.Refresh() End Set End Property @@ -122,18 +121,18 @@ Namespace PreviewN DoubleBuffered = True 'glControl1 - Me.glControl1 = New GLControl - Me.glControl1.BackColor = Color.Black - Me.glControl1.Location = New Point(0, 0) - Me.glControl1.MinimumSize = New Size(600, 120) - Me.glControl1.Name = "glControl1" - Me.glControl1.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right Or AnchorStyles.Bottom - Me.glControl1.Location = New Point(0, 0) - Me.glControl1.Size = Me.ClientSize - Me.glControl1.TabIndex = 0 - Me.glControl1.TabStop = False - Me.glControl1.VSync = False - Me.Controls.Add(Me.glControl1) + Me.glControl1 = New Wpf.GLWpfControl + Me.glControlHost.Child = glControl1 + Me.glControlHost = New ElementHost + Me.glControlHost.BackColor = Color.Black + Me.glControlHost.Name = "glControl1" + Me.glControlHost.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right Or AnchorStyles.Bottom + Me.glControlHost.Location = New Point(0, 0) + Me.glControlHost.MinimumSize = New Size(600, 120) + Me.glControlHost.Size = Me.ClientSize + Me.glControlHost.TabIndex = 0 + Me.glControlHost.TabStop = False + Me.Controls.Add(Me.glControlHost) Me.ResumeLayout(False) 'RenderTimer.SynchronizingObject = Nothing @@ -141,10 +140,11 @@ Namespace PreviewN 'Toolkit.Init() - glControl1.CreateControl() + Dim controlSettings As New Wpf.GLWpfControlSettings + glControl1.Start(controlSettings) AddHandler glControl1.MouseWheel, AddressOf glControl1_Wheel ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, glControl1.Width / glControl1.Height, 100.0F, 100000.0F) - glControl1.Enabled = False + glControlHost.Enabled = True MyCamera.SetCameraMode(CameraMode.FLY, camMtx) MyCamera.UpdateMatrix(camMtx) @@ -163,8 +163,8 @@ Namespace PreviewN End Sub Public Sub UpdateView() - If glControl1.Enabled Then - glControl1.Invoke(Sub() glControl1.Invalidate()) + If glControl1.IsEnabled Then + glControlHost.Invoke(Sub() glControlHost.Invalidate()) End If End Sub @@ -179,9 +179,9 @@ Namespace PreviewN End Sub Public Sub HandlesOnShown(sender As Object, e As EventArgs) Handles MyBase.Shown - glControl1.Enabled = True + glControlHost.Enabled = True RenderModels() - glControl1.Invalidate() + glControlHost.Invalidate() End Sub Public Sub RenderModels() @@ -197,7 +197,7 @@ Namespace PreviewN End If End Sub - Private Sub glControl1_Load(sender As Object, e As EventArgs) Handles glControl1.Load + Private Sub glControl1_Load(sender As Object, e As EventArgs) Handles glControl1.Loaded GL.Enable(EnableCap.Blend) GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha) @@ -227,7 +227,7 @@ Namespace PreviewN End If End Sub - Public Sub HandlesOnPaint(sender As Object, e As PaintEventArgs) Handles glControl1.Paint + Public Sub HandlesOnPaint(renderTime As TimeSpan) Handles glControl1.Render GL.ClearColor(ClearColor) GL.Clear(ClearBufferMask.ColorBufferBit Or ClearBufferMask.DepthBufferBit) @@ -243,24 +243,24 @@ Namespace PreviewN End If Next - glControl1.SwapBuffers() + 'glControl1.SwapBuffers() End Sub - Private Sub glControl1_Resize(sender As Object, e As EventArgs) Handles glControl1.Resize - glControl1.Context.Update(glControl1.WindowInfo) + Private Sub glControl1_Resize(sender As Object, e As EventArgs) Handles glControlHost.Resize + 'glControl1.Context.Update(glControl1.WindowInfo) GL.Viewport(0, 0, glControl1.Width, glControl1.Height) ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, glControl1.Width / glControl1.Height, 100.0F, 100000.0F) - glControl1.Invalidate() + glControlHost.Invalidate() End Sub - Private Sub glControl1_Wheel(sender As Object, e As MouseEventArgs) + Private Sub glControl1_Wheel(sender As Object, e As Windows.Input.MouseWheelEventArgs) MyCamera.ResetMouseStuff() MyCamera.UpdateCameraMatrixWithScrollWheel(CInt(Math.Truncate(e.Delta * (If(IsShiftPressed, 3.5F, 1.5F)))), camMtx) savedCamPos = MyCamera.Position - glControl1.Invalidate() + glControlHost.Invalidate() End Sub - Private Sub glControl1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles glControl1.MouseDown + Private Sub glControl1_MouseDown(ByVal sender As Object, ByVal e As Windows.Input.MouseButtonEventArgs) Handles glControl1.MouseDown IsMouseDown = True savedCamPos = MyCamera.Position End Sub @@ -270,14 +270,14 @@ Namespace PreviewN IsMouseDown = False End Sub - Private Sub glControl1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles glControl1.MouseMove + Private Sub glControl1_MouseMove(ByVal sender As Object, ByVal e As Windows.Forms.MouseEventArgs) Handles glControlHost.MouseMove If IsMouseDown AndAlso e.Button = MouseButtons.Left Then If IsShiftPressed Then MyCamera.UpdateCameraOffsetWithMouse(savedCamPos, e.X, e.Y, glControl1.Width, glControl1.Height, camMtx) Else MyCamera.UpdateCameraMatrixWithMouse(e.X, e.Y, camMtx) End If - glControl1.Invalidate() + glControlHost.Invalidate() End If End Sub @@ -286,31 +286,29 @@ Namespace PreviewN Dim allowCamMove As Boolean = Not (IsMouseDown AndAlso IsShiftPressed) If allowCamMove Then - Dim state As KeyboardState = Keyboard.GetState - - If state(Key.W) Then + If Keyboard.IsKeyDown(Key.W) Then 'camera.Move(moveSpeed, moveSpeed, camMtx) MyCamera.UpdateCameraMatrixWithScrollWheel(moveSpeed, camMtx) savedCamPos = MyCamera.Position End If - If state(Key.S) Then + If Keyboard.IsKeyDown(Key.S) Then 'camera.Move(-moveSpeed, -moveSpeed, camMtx) MyCamera.UpdateCameraMatrixWithScrollWheel(-moveSpeed, camMtx) savedCamPos = MyCamera.Position End If - If state(Key.A) Then + If Keyboard.IsKeyDown(Key.A) Then 'camera.Move(-moveSpeed, 0, camMtx) MyCamera.UpdateCameraOffsetDirectly(-moveSpeed, 0, camMtx) End If - If state(Key.D) Then + If Keyboard.IsKeyDown(Key.D) Then 'camera.Move(moveSpeed, 0, camMtx) MyCamera.UpdateCameraOffsetDirectly(moveSpeed, 0, camMtx) End If - If state(Key.E) Then + If Keyboard.IsKeyDown(Key.E) Then 'camera.Move(0, -moveSpeed, camMtx) MyCamera.UpdateCameraOffsetDirectly(0, -moveSpeed, camMtx) End If - If state(Key.Q) Then + If Keyboard.IsKeyDown(Key.Q) Then 'camera.Move(0, moveSpeed, camMtx) MyCamera.UpdateCameraOffsetDirectly(0, moveSpeed, camMtx) End If diff --git a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Rendering/Renderer.vb b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Rendering/Renderer.vb index 6e071c6..8319ed9 100644 --- a/Pilz.Drawing.Drawing3D.OpenGLRenderer/Rendering/Renderer.vb +++ b/Pilz.Drawing.Drawing3D.OpenGLRenderer/Rendering/Renderer.vb @@ -1,9 +1,13 @@ Imports System.Drawing Imports System.Threading Imports System.Windows.Forms + Imports OpenTK Imports OpenTK.Graphics.OpenGL +Imports OpenTK.Mathematics + Imports Pilz.S3DFileParser + Imports Bitmap = System.Drawing.Bitmap Imports Color = System.Drawing.Color Imports Image = System.Drawing.Image