From 1b16f0719925f1e71f4bb8072080ea0e30049e5f Mon Sep 17 00:00:00 2001 From: MrJaqbq Date: Sun, 3 Jul 2016 12:51:25 +0200 Subject: [PATCH 1/2] OpenGl rendering basics --- Src/Game.NET/Core/Engine.cs | 57 +++++++++- Src/Game.NET/Game.NET.csproj | 14 ++- Src/Game.NET/Gfx/RenderBatch.cs | 28 +++++ Src/Game.NET/Gfx/RenderTarget.cs | 11 ++ Src/Game.NET/Gfx/Renderer.cs | 49 ++++++++ Src/Game.NET/Gfx/Sprite.cs | 12 ++ Src/Game.NET/Logic/State.cs | 3 + Src/Game.NET/Logic/Transition.cs | 7 +- Src/Game.NET/Parsing/FileParser.cs | 5 +- Src/Game.NET/Parsing/FileType.cs | 4 +- Src/Game.NET/Parsing/Obj/ObjParsingWorker.cs | 22 ++-- Src/Game.NET/Resources/Material/Material.cs | 54 +++++++++ .../Resources/Material/Matrix4Uniform.cs | 18 +++ Src/Game.NET/Resources/Material/Uniform.cs | 31 +++++ Src/Game.NET/Resources/Mesh/Mesh.cs | 29 ++++- Src/Game.NET/Resources/Mesh/ObjSubMesh.cs | 22 ++++ Src/Game.NET/Resources/Mesh/SubMesh.cs | 107 +++++++++++++++--- Src/Game.NET/Resources/Mesh/Vertex.cs | 12 ++ .../Resources/Mesh/VertexAttribute.cs | 33 ++++++ Src/Game.NET/Resources/MeshFactory.cs | 17 +++ Src/Game.NET/Resources/Shader/Shader.cs | 4 + Src/Game.NET/Resources/SpriteSheet.cs | 6 + Src/Game.NET/States/Menu/Menu.cs | 6 + .../ObjFileParserAcceptanceTests.cs | 4 +- Src/Tests/Game.NET.Tests/Model/MeshTests.cs | 6 +- .../Game.NET.Tests/Model/SubMeshTests.cs | 2 +- .../Parsing/Obj/ObjParsingServiceTests.cs | 2 +- .../Parsing/Obj/ObjParsingWorkerTests.cs | 72 ++++++------ 28 files changed, 558 insertions(+), 79 deletions(-) create mode 100644 Src/Game.NET/Gfx/RenderBatch.cs create mode 100644 Src/Game.NET/Gfx/RenderTarget.cs create mode 100644 Src/Game.NET/Gfx/Renderer.cs create mode 100644 Src/Game.NET/Gfx/Sprite.cs create mode 100644 Src/Game.NET/Resources/Material/Material.cs create mode 100644 Src/Game.NET/Resources/Material/Matrix4Uniform.cs create mode 100644 Src/Game.NET/Resources/Material/Uniform.cs create mode 100644 Src/Game.NET/Resources/Mesh/ObjSubMesh.cs create mode 100644 Src/Game.NET/Resources/Mesh/Vertex.cs create mode 100644 Src/Game.NET/Resources/Mesh/VertexAttribute.cs create mode 100644 Src/Game.NET/Resources/MeshFactory.cs create mode 100644 Src/Game.NET/Resources/SpriteSheet.cs diff --git a/Src/Game.NET/Core/Engine.cs b/Src/Game.NET/Core/Engine.cs index db935d2..48711b8 100644 --- a/Src/Game.NET/Core/Engine.cs +++ b/Src/Game.NET/Core/Engine.cs @@ -1,4 +1,9 @@ -using Game.NET.Logic; +using System.Collections.Generic; +using Game.NET.Gfx; +using Game.NET.Logic; +using OpenTK; +using OpenTK.Graphics; +using OpenTK.Graphics.OpenGL; namespace Game.NET.Core { @@ -10,6 +15,15 @@ public class Engine public bool IsDone { get; private set; } + private List states = new List(); + + private Renderer renderer = new Renderer(); + + private GameWindow window; + + private float fpsTime; + private int frames; + public Engine() { IsDone = true; @@ -18,6 +32,9 @@ public Engine() public bool Init(string[] argv = null, string config = "Config.cfg") { IsDone = false; + + renderer.CreateBatch("default"); + return true; } @@ -30,9 +47,47 @@ public void SwitchState(State state) if (CurrentState != null) CurrentState.Start(); } + public void ProcessInput() + { + if(CurrentState != null) CurrentState.ProcessInput(); + } + + public void Update(GameTime time) + { + time.RealTime += time.DeltaTime; + time.Time += time.Speed * time.DeltaTime; + + if (fpsTime >= 1.0f) + { + time.Fps = frames / fpsTime; + frames = 0; + fpsTime = 0.0f; + } + + if (CurrentState != null) CurrentState.Update(time); + } + + public void Draw(GameTime time) + { + frames++; + fpsTime += time.DeltaTime; + + GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + if (CurrentState != null) CurrentState.Draw(renderer, time); + + renderer.Draw(); + } + + public void Exit() + { + IsDone = true; + } + public void CleanUp() { IsDone = true; + // free data } } } diff --git a/Src/Game.NET/Game.NET.csproj b/Src/Game.NET/Game.NET.csproj index 8ac3461..80d03d0 100644 --- a/Src/Game.NET/Game.NET.csproj +++ b/Src/Game.NET/Game.NET.csproj @@ -58,12 +58,23 @@ + + + + + + + + + + + @@ -78,7 +89,7 @@ - + @@ -94,6 +105,7 @@ +