aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Ulbrich <adrian.ulbrich.2003@gmail.com>2019-11-08 23:56:17 +0100
committerAdrian Ulbrich <adrian.ulbrich.2003@gmail.com>2019-11-08 23:56:17 +0100
commit3b214e75effaca1ba67daaf29d0a94e5b0129386 (patch)
treeee0ccd43f193f2bdaedd36dcdc944f01a75e37e3
parente63155370c817a1d9c16ef798b0a55e6fe328941 (diff)
downloadUnicity-3b214e75effaca1ba67daaf29d0a94e5b0129386.tar.gz
Unicity-3b214e75effaca1ba67daaf29d0a94e5b0129386.tar.bz2
Unicity-3b214e75effaca1ba67daaf29d0a94e5b0129386.zip
Started work on actual engine
-rw-r--r--Unicity.Engine/GameObject.cs27
-rw-r--r--Unicity.Engine/GameWindow.cs63
-rw-r--r--Unicity.Engine/Model.cs7
-rw-r--r--Unicity.Engine/Properties/AssemblyInfo.cs (renamed from Unicity.RenderTest/Properties/AssemblyInfo.cs)12
-rw-r--r--Unicity.Engine/Unicity.Engine.csproj61
-rw-r--r--Unicity.Game/App.config (renamed from Unicity.RenderTest/App.config)0
-rw-r--r--Unicity.Game/Program.cs15
-rw-r--r--Unicity.Game/Properties/AssemblyInfo.cs36
-rw-r--r--Unicity.Game/Unicity.Game.csproj (renamed from Unicity.RenderTest/Unicity.RenderTest.csproj)12
-rw-r--r--Unicity.RenderTest/Program.cs88
-rw-r--r--Unicity.Renderer/Camera.cs50
-rw-r--r--Unicity.Renderer/GraphicsRenderer.cs102
-rw-r--r--Unicity.Renderer/Properties/AssemblyInfo.cs12
-rw-r--r--Unicity.Renderer/Properties/Resources.Designer.cs83
-rw-r--r--Unicity.Renderer/Properties/Resources.resx127
-rw-r--r--Unicity.Renderer/RenderWindow.cs89
-rw-r--r--Unicity.Renderer/Resources/fragmentShader.frag10
-rw-r--r--Unicity.Renderer/Resources/vertexShader.vert19
-rw-r--r--Unicity.Renderer/Shader.cs92
-rw-r--r--Unicity.Renderer/ShaderCompilationFailedException.cs9
-rw-r--r--Unicity.Renderer/Shapes/Rectangle.cs26
-rw-r--r--Unicity.Renderer/Shapes/Shape.cs17
-rw-r--r--Unicity.Renderer/Shapes/Triangle.cs50
-rw-r--r--Unicity.Renderer/Unicity.Renderer.csproj34
-rw-r--r--Unicity.Renderer/WindowCreationFailedException.cs12
-rw-r--r--Unicity.Renderer/shaders/test.frag1
-rw-r--r--Unicity.Renderer/shaders/test.vert8
-rw-r--r--Unicity.sln26
28 files changed, 327 insertions, 761 deletions
diff --git a/Unicity.Engine/GameObject.cs b/Unicity.Engine/GameObject.cs
new file mode 100644
index 0000000..b59dd8b
--- /dev/null
+++ b/Unicity.Engine/GameObject.cs
@@ -0,0 +1,27 @@
+namespace Unicity.Engine
+{
+ public class GameObject
+ {
+ public float X = 0;
+ public float Y = 0;
+ public float Z = 0;
+
+ public float ScaleX = 0;
+ public float ScaleY = 0;
+ public float ScaleZ = 0;
+
+ public Model Model = null;
+
+ public GameObject()
+ {
+
+ }
+
+ public GameObject(float x, float y, float z)
+ {
+ X = x;
+ Y = y;
+ Z = z;
+ }
+ }
+}
diff --git a/Unicity.Engine/GameWindow.cs b/Unicity.Engine/GameWindow.cs
new file mode 100644
index 0000000..cb44eb8
--- /dev/null
+++ b/Unicity.Engine/GameWindow.cs
@@ -0,0 +1,63 @@
+using System;
+using Unicity.Renderer;
+
+namespace Unicity.Engine
+{
+ public class GameWindow : IDisposable
+ {
+ RenderWindow window = null;
+ GraphicsRenderer renderer = null;
+
+ public int Width { get => window.Width; set => window.Width = value; }
+ public int Height { get => window.Height; set => window.Height = value; }
+
+ public string Title { get => window.Title; set => window.Title = value; }
+
+ bool disposed = false;
+
+ public GameWindow(int width = 800, int height = 800, string title = "Unicity Renderer written by Adrian Ulbrich")
+ {
+ window = new RenderWindow(width, height, title);
+ renderer = new GraphicsRenderer(window);
+
+ window.Render += Window_Render;
+
+ renderer.TestInit();
+ }
+
+ private void Window_Render(object sender, EventArgs e)
+ {
+ renderer.TestLoop();
+ }
+
+ public void Open(double ups = 60.0, double fps = 60.0)
+ {
+ window.Open(ups, fps);
+ renderer.TestInit();
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (disposed)
+ {
+ return;
+ }
+
+ if (disposing)
+ {
+ // Dispose of managed resources
+ }
+
+ // Dispose of unmanaged resources
+ window?.Dispose();
+
+ disposed = true;
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+ }
+}
diff --git a/Unicity.Engine/Model.cs b/Unicity.Engine/Model.cs
new file mode 100644
index 0000000..ab5a2e7
--- /dev/null
+++ b/Unicity.Engine/Model.cs
@@ -0,0 +1,7 @@
+namespace Unicity.Engine
+{
+ public class Model
+ {
+
+ }
+}
diff --git a/Unicity.RenderTest/Properties/AssemblyInfo.cs b/Unicity.Engine/Properties/AssemblyInfo.cs
index d5a6093..b6ce7aa 100644
--- a/Unicity.RenderTest/Properties/AssemblyInfo.cs
+++ b/Unicity.Engine/Properties/AssemblyInfo.cs
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
-[assembly: AssemblyTitle("Unicity Render Test")]
-[assembly: AssemblyDescription("Test for the Unicity renderer")]
+[assembly: AssemblyTitle("Unicity.Engine")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Alee Productions")]
-[assembly: AssemblyProduct("Unicity Renderer Test")]
-[assembly: AssemblyCopyright("Copyright © 2019 Alee Productions")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Unicity.Engine")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
-[assembly: Guid("0155c998-9189-4c19-8dcc-13499797c7ea")]
+[assembly: Guid("cbf47abd-0454-496a-b3e3-848d27317c59")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
diff --git a/Unicity.Engine/Unicity.Engine.csproj b/Unicity.Engine/Unicity.Engine.csproj
new file mode 100644
index 0000000..e077857
--- /dev/null
+++ b/Unicity.Engine/Unicity.Engine.csproj
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{CBF47ABD-0454-496A-B3E3-848D27317C59}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>Unicity.Engine</RootNamespace>
+ <AssemblyName>Unicity.Engine</AssemblyName>
+ <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject />
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="GameWindow.cs" />
+ <Compile Include="Model.cs" />
+ <Compile Include="GameObject.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Unicity.Renderer\Unicity.Renderer.csproj">
+ <Project>{7c0c6e9f-6bc9-4825-b657-8dace26cf4fd}</Project>
+ <Name>Unicity.Renderer</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/Unicity.RenderTest/App.config b/Unicity.Game/App.config
index 56efbc7..56efbc7 100644
--- a/Unicity.RenderTest/App.config
+++ b/Unicity.Game/App.config
diff --git a/Unicity.Game/Program.cs b/Unicity.Game/Program.cs
new file mode 100644
index 0000000..479385e
--- /dev/null
+++ b/Unicity.Game/Program.cs
@@ -0,0 +1,15 @@
+using Unicity.Engine;
+
+namespace Unicity.Game
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ using (GameWindow gameWindow = new GameWindow(400, 400, "Render Test"))
+ {
+ gameWindow.Open();
+ }
+ }
+ }
+}
diff --git a/Unicity.Game/Properties/AssemblyInfo.cs b/Unicity.Game/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8ebde5e
--- /dev/null
+++ b/Unicity.Game/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("Unicity.Game")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Unicity.Game")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
+// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
+// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("4c824664-944b-4dca-89be-8cf16d249f51")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+// Hauptversion
+// Nebenversion
+// Buildnummer
+// Revision
+//
+// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+// indem Sie "*" wie unten gezeigt eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Unicity.RenderTest/Unicity.RenderTest.csproj b/Unicity.Game/Unicity.Game.csproj
index 556c185..01f81ba 100644
--- a/Unicity.RenderTest/Unicity.RenderTest.csproj
+++ b/Unicity.Game/Unicity.Game.csproj
@@ -4,10 +4,10 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{0155C998-9189-4C19-8DCC-13499797C7EA}</ProjectGuid>
+ <ProjectGuid>{4C824664-944B-4DCA-89BE-8CF16D249F51}</ProjectGuid>
<OutputType>Exe</OutputType>
- <RootNamespace>Unicity.RenderTest</RootNamespace>
- <AssemblyName>RenderTest</AssemblyName>
+ <RootNamespace>Unicity.Game</RootNamespace>
+ <AssemblyName>Unicity.Game</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
@@ -50,9 +50,9 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\Unicity.Renderer\Unicity.Renderer.csproj">
- <Project>{f6ebb1f8-fca9-4a8d-a807-e877cd047908}</Project>
- <Name>Unicity.Renderer</Name>
+ <ProjectReference Include="..\Unicity.Engine\Unicity.Engine.csproj">
+ <Project>{cbf47abd-0454-496a-b3e3-848d27317c59}</Project>
+ <Name>Unicity.Engine</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff --git a/Unicity.RenderTest/Program.cs b/Unicity.RenderTest/Program.cs
deleted file mode 100644
index 5a3bbc5..0000000
--- a/Unicity.RenderTest/Program.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-using Unicity.Renderer;
-using Unicity.Renderer.Shapes;
-
-namespace Unicity.RenderTest
-{
- class Program
- {
- static RenderWindow window = null;
- static Camera camera = null;
- static GraphicsRenderer renderer = null;
-
- static Rectangle[] cube = null;
-
- static void Main(string[] args)
- {
- camera = new Camera(CameraProjectionMode.Perspective);
-
- using (window = new RenderWindow(400, 400, "Render Test"))
- using (renderer = new GraphicsRenderer(window, camera))
- {
- window.Init += Window_Init;
- window.Update += Window_Update;
- window.Render += Window_Render;
- window.Destroy += Window_Destroy;
-
- window.Open();
- }
- }
-
- private static void Window_Init(object sender, System.EventArgs e)
- {
- renderer.SetClearColor(0.0f, 0.0f, 0.0f, 1.0f);
- renderer.SetDrawColor(1.0f, 0.0f, 1.0f);
-
- cube = new Rectangle[]
- {
- new Rectangle(-1.0f, 1.0f, -1.0f,
- 1.0f, 1.0f, -1.0f,
- -1.0f, -1.0f, -1.0f,
- 1.0f, -1.0f, -1.0f),
-
- new Rectangle(-1.0f, 1.0f, 1.0f,
- 1.0f, 1.0f, 1.0f,
- -1.0f, -1.0f, 1.0f,
- 1.0f, -1.0f, 1.0f),
-
- new Rectangle(-1.0f, 1.0f, 1.0f,
- 1.0f, 1.0f, 1.0f,
- -1.0f, 1.0f, -1.0f,
- 1.0f, 1.0f, -1.0f),
-
- new Rectangle(-1.0f, -1.0f, 1.0f,
- 1.0f, -1.0f, 1.0f,
- -1.0f, -1.0f, -1.0f,
- 1.0f, -1.0f, -1.0f),
-
- new Rectangle(-1.0f, 1.0f, -1.0f,
- -1.0f, 1.0f, 1.0f,
- -1.0f, -1.0f, -1.0f,
- -1.0f, -1.0f, -1.0f),
-
- new Rectangle(1.0f, 1.0f, -1.0f,
- 1.0f, 1.0f, 1.0f,
- 1.0f, -1.0f, -1.0f,
- 1.0f, -1.0f, -1.0f)
- };
- }
-
- private static void Window_Update(object sender, System.EventArgs e)
- {
-
- }
-
- private static void Window_Render(object sender, System.EventArgs e)
- {
- renderer.ClearScreen();
- renderer.DrawShapes(cube);
- }
-
- private static void Window_Destroy(object sender, System.EventArgs e)
- {
- foreach (Rectangle rect in cube)
- {
- rect.Dispose();
- }
- }
- }
-}
diff --git a/Unicity.Renderer/Camera.cs b/Unicity.Renderer/Camera.cs
deleted file mode 100644
index b58b571..0000000
--- a/Unicity.Renderer/Camera.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using OpenTK;
-
-namespace Unicity.Renderer
-{
- public enum CameraProjectionMode
- {
- Ortographic,
- Perspective
- }
-
- public class Camera
- {
- float x = 0f;
- float y = 0f;
- float z = 0f;
-
- Matrix4 projectionMatrix = Matrix4.Identity;
-
- CameraProjectionMode projectionMode = CameraProjectionMode.Ortographic;
-
- public Camera(CameraProjectionMode projectionMode = CameraProjectionMode.Ortographic)
- {
- this.projectionMode = projectionMode;
- }
-
- public void Initialize()
- {
- switch (projectionMode)
- {
- case CameraProjectionMode.Ortographic:
- projectionMatrix = Matrix4.CreateOrthographic(600f, 600.0f, 0.1f, 100f);
- break;
- case CameraProjectionMode.Perspective:
- projectionMatrix = Matrix4.CreatePerspectiveFieldOfView(MathHelper.DegreesToRadians(45f), 1f, 0.1f, 100f);
- break;
-
- }
- }
-
- public void UpdateView(Shader shader)
- {
- Matrix4 modelMatrix = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(-55.0f));
- Matrix4 viewMatrix = Matrix4.CreateTranslation(0.0f, 0.0f, -8.0f);
-
- shader.SetUniform("model", modelMatrix);
- shader.SetUniform("view", viewMatrix);
- shader.SetUniform("projection", projectionMatrix);
- }
- }
-}
diff --git a/Unicity.Renderer/GraphicsRenderer.cs b/Unicity.Renderer/GraphicsRenderer.cs
index 6508a4c..4a794c9 100644
--- a/Unicity.Renderer/GraphicsRenderer.cs
+++ b/Unicity.Renderer/GraphicsRenderer.cs
@@ -1,103 +1,45 @@
-using System;
-using System.Text;
-using OpenTK;
+using System.IO;
using OpenTK.Graphics.OpenGL4;
-using Unicity.Renderer.Shapes;
namespace Unicity.Renderer
{
- public class GraphicsRenderer : IDisposable
+ public class GraphicsRenderer
{
- public RenderWindow window { get; }
- public Camera camera = null;
+ RenderWindow window = null;
- Shader shader = null;
-
- public GraphicsRenderer(RenderWindow window, Camera camera)
- {
- this.window = window;
- this.camera = camera;
-
- Console.WriteLine("Compiling GLSL shaders...");
-
- string vertexShader = Encoding.UTF8.GetString(Properties.Resources.vertexShader);
- string fragmentShader = Encoding.UTF8.GetString(Properties.Resources.fragmentShader);
- shader = new Shader(vertexShader, fragmentShader);
- shader.Use();
-
- Console.WriteLine("Reticulating splines...");
-
- GL.ClearDepth(1.0f);
- GL.Enable(EnableCap.DepthTest);
- GL.DepthFunc(DepthFunction.Lequal);
-
- camera.Initialize();
- window.Update += Window_Update;
-
- GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
- }
-
- private void Window_Update(object sender, EventArgs e)
- {
- camera.UpdateView(shader);
- shader.Use();
- }
-
- public void SetClearColor(float red, float green, float blue, float alpha)
- {
- GL.ClearColor(red, green, blue, alpha);
- }
-
- public void SetDrawColor(float red, float green, float blue)
+ // Tests
+ float[] vertices =
{
- shader.SetUniform("color", new Vector3(red, green, blue));
- }
+ -0.5f, -0.5f, 0.0f,
+ 0.5f, -0.5f, 0.0f,
+ 0.0f, 0.5f, 0.0f
+ };
- public void DrawShape(Shape shape)
- {
- shape.Draw(shader, this);
- }
+ Shader shader = null;
- public void DrawShapes(Shape[] shapes)
- {
- foreach (Shape shape in shapes)
- {
- DrawShape(shape);
- }
- }
+ int VBO = 0;
- public void ClearScreen()
+ public GraphicsRenderer(RenderWindow window)
{
- window.window.MakeCurrent();
- GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+ this.window = window;
}
- bool disposed = false;
- protected virtual void Dispose(bool disposing)
+ public void TestInit()
{
- // Return of already disposed
- if (disposed)
- {
- return;
- }
+ window.MakeCurrent();
- if (disposing)
- {
- // Free managed objects here
- }
+ string vertexCode = File.ReadAllText("shaders/test.vert");
- // Dispose of any unmanaged resources
- window?.Dispose();
- shader.Delete();
+ shader = new Shader(vertexCode, "");
- // Set disposed flag to true
- disposed = true;
+ VBO = GL.GenBuffer();
+ GL.BindBuffer(BufferTarget.ArrayBuffer, VBO);
+ GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
}
- public void Dispose()
+ public void TestLoop()
{
- Dispose(true);
- GC.SuppressFinalize(this);
+ window.MakeCurrent();
}
}
}
diff --git a/Unicity.Renderer/Properties/AssemblyInfo.cs b/Unicity.Renderer/Properties/AssemblyInfo.cs
index b86f96f..1bb3a9f 100644
--- a/Unicity.Renderer/Properties/AssemblyInfo.cs
+++ b/Unicity.Renderer/Properties/AssemblyInfo.cs
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
-[assembly: AssemblyTitle("Unicity Renderer")]
-[assembly: AssemblyDescription("Renderer for the Unicity game")]
+[assembly: AssemblyTitle("Unicity.Renderer")]
+[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Alee Productions")]
-[assembly: AssemblyProduct("Unicity Renderer")]
-[assembly: AssemblyCopyright("Copyright © 2019 Alee Productions")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Unicity.Renderer")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
-[assembly: Guid("f6ebb1f8-fca9-4a8d-a807-e877cd047908")]
+[assembly: Guid("7c0c6e9f-6bc9-4825-b657-8dace26cf4fd")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
diff --git a/Unicity.Renderer/Properties/Resources.Designer.cs b/Unicity.Renderer/Properties/Resources.Designer.cs
deleted file mode 100644
index c1bc96c..0000000
--- a/Unicity.Renderer/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-// Dieser Code wurde von einem Tool generiert.
-// Laufzeitversion:4.0.30319.42000
-//
-// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-// der Code erneut generiert wird.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Unicity.Renderer.Properties {
- using System;
-
-
- /// <summary>
- /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
- /// </summary>
- // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
- // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
- // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
- // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- /// <summary>
- /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Unicity.Renderer.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- /// <summary>
- /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
- /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
- /// </summary>
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- /// <summary>
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- /// </summary>
- internal static byte[] fragmentShader {
- get {
- object obj = ResourceManager.GetObject("fragmentShader", resourceCulture);
- return ((byte[])(obj));
- }
- }
-
- /// <summary>
- /// Sucht eine lokalisierte Ressource vom Typ System.Byte[].
- /// </summary>
- internal static byte[] vertexShader {
- get {
- object obj = ResourceManager.GetObject("vertexShader", resourceCulture);
- return ((byte[])(obj));
- }
- }
- }
-}
diff --git a/Unicity.Renderer/Properties/Resources.resx b/Unicity.Renderer/Properties/Resources.resx
deleted file mode 100644
index 093fbf3..0000000
--- a/Unicity.Renderer/Properties/Resources.resx
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="fragmentShader" type="System.Resources.ResXFileRef, System.Windows.Forms">
- <value>..\Resources\fragmentShader.frag;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
- <data name="vertexShader" type="System.Resources.ResXFileRef, System.Windows.Forms">
- <value>..\Resources\vertexShader.vert;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </data>
-</root> \ No newline at end of file
diff --git a/Unicity.Renderer/RenderWindow.cs b/Unicity.Renderer/RenderWindow.cs
index 2026780..4566295 100644
--- a/Unicity.Renderer/RenderWindow.cs
+++ b/Unicity.Renderer/RenderWindow.cs
@@ -1,6 +1,4 @@
using System;
-using System.Diagnostics;
-using System.Drawing;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL4;
@@ -9,93 +7,67 @@ namespace Unicity.Renderer
{
public class RenderWindow : IDisposable
{
- const int UPS = 60;
-
- internal GameWindow window = null;
-
- Stopwatch loopTimer = new Stopwatch();
-
- public event EventHandler Init;
public event EventHandler Update;
public event EventHandler Render;
- public event EventHandler Destroy;
- public int Width
- {
- get => window.ClientSize.Width;
- set => window.ClientSize = new Size(value, window.ClientSize.Height);
- }
+ GameWindow window = null;
- public int Height
- {
- get => window.ClientSize.Height;
- set => window.ClientSize = new Size(window.ClientSize.Width, value);
- }
+ public int Width { get => window.Width; set => window.Width = value; }
+ public int Height { get => window.Height; set => window.Height = value; }
- public string Title
- {
- get => window.Title;
- set => window.Title = value;
- }
+ public string Title { get => window.Title; set => window.Title = value; }
- bool running = false;
+ bool disposed = false;
public RenderWindow(int width, int height, string title)
{
- window = new GameWindow(width, height, GraphicsMode.Default, title, GameWindowFlags.Default);
-
+ window = new GameWindow(width, height, GraphicsMode.Default, title, GameWindowFlags.Default, DisplayDevice.Default, 4, 0, GraphicsContextFlags.ForwardCompatible);
+ window.Load += Window_Load;
+ window.Resize += Window_Resize;
window.UpdateFrame += Window_UpdateFrame;
window.RenderFrame += Window_RenderFrame;
- window.Unload += Window_Unload;
- window.Resize += Window_Resize;
}
-
- private void Window_UpdateFrame(object sender, FrameEventArgs e)
+ private void Window_Load(object sender, EventArgs e)
{
- Update?.Invoke(this, EventArgs.Empty);
+ GL.Viewport(0, 0, Width, Height);
+ GL.ClearColor(1.0f, 0.0f, 0.0f, 1.0f);
}
- private void Window_RenderFrame(object sender, FrameEventArgs e)
+ private void Window_Resize(object sender, EventArgs e)
{
- Render?.Invoke(this, EventArgs.Empty);
- window.SwapBuffers();
+ GL.Viewport(0, 0, Width, Height);
}
- private void Window_Unload(object sender, EventArgs e)
+ private void Window_UpdateFrame(object sender, FrameEventArgs e)
{
- Destroy?.Invoke(this, EventArgs.Empty);
+ Update?.Invoke(this, EventArgs.Empty);
}
- private void Window_Resize(object sender, EventArgs e)
+ private void Window_RenderFrame(object sender, FrameEventArgs e)
{
- GL.Viewport(0, 0, Width, Height);
- Render?.Invoke(this, EventArgs.Empty);
+ GL.Clear(ClearBufferMask.ColorBufferBit);
+
+ Update?.Invoke(this, EventArgs.Empty);
+
window.SwapBuffers();
}
+
+ public void Open(double ups, double fps)
+ {
+ window.Run(ups, fps);
+ }
- public void Open()
+ public void MakeCurrent()
{
- if (running)
+ if (window.IsExiting)
{
return;
}
-
- Init?.Invoke(this, EventArgs.Empty);
- window.VSync = VSyncMode.Off;
- window.Run(UPS, 0);
-
- running = true;
+ window.MakeCurrent();
}
- public double GetFPS()
- {
- return window.RenderFrequency;
- }
-
- bool disposed = false;
protected virtual void Dispose(bool disposing)
{
- // Return of already disposed
if (disposed)
{
return;
@@ -103,13 +75,12 @@ namespace Unicity.Renderer
if (disposing)
{
- // Free managed objects here
+ // Dispose of managed resources
}
- // Dispose of any unmanaged resources
+ // Dispose of unmanaged resources
window?.Dispose();
- // Set disposed flag to true
disposed = true;
}
diff --git a/Unicity.Renderer/Resources/fragmentShader.frag b/Unicity.Renderer/Resources/fragmentShader.frag
deleted file mode 100644
index a5941bd..0000000
--- a/Unicity.Renderer/Resources/fragmentShader.frag
+++ /dev/null
@@ -1,10 +0,0 @@
-#version 330 core
-
-out vec4 color;
-
-in vec4 inColor;
-
-void main()
-{
- color = inColor;
-} \ No newline at end of file
diff --git a/Unicity.Renderer/Resources/vertexShader.vert b/Unicity.Renderer/Resources/vertexShader.vert
deleted file mode 100644
index 330b3e0..0000000
--- a/Unicity.Renderer/Resources/vertexShader.vert
+++ /dev/null
@@ -1,19 +0,0 @@
-#version 330 core
-
-layout(location = 0) in vec3 vertexPosition_modelspace;
-
-uniform mat4 model;
-uniform mat4 view;
-uniform mat4 projection;
-
-uniform vec3 color;
-uniform float alpha;
-
-out vec4 inColor;
-
-void main()
-{
- gl_Position = projection * view * model * vec4(vertexPosition_modelspace, 1.0);
-
- inColor = vec4(color, 1.0);
-} \ No newline at end of file
diff --git a/Unicity.Renderer/Shader.cs b/Unicity.Renderer/Shader.cs
index 76393a0..6ee0b33 100644
--- a/Unicity.Renderer/Shader.cs
+++ b/Unicity.Renderer/Shader.cs
@@ -1,95 +1,31 @@
-using OpenTK;
+using System;
using OpenTK.Graphics.OpenGL4;
namespace Unicity.Renderer
{
- public class Shader
+ class Shader
{
- int id = 0;
+ //int program = 0;
- public Shader(string vertexShaderSource, string fragmentShaderSource)
+ public Shader(string vertexCode, string fragmentCode)
{
- int vertexShader = GL.CreateShader(ShaderType.VertexShader);
- GL.ShaderSource(vertexShader, vertexShaderSource);
- GL.CompileShader(vertexShader);
+ int vertex = GL.CreateShader(ShaderType.VertexShader);
- int[] isCompiled = new int[1];
- GL.GetShader(vertexShader, ShaderParameter.CompileStatus, isCompiled);
- if (isCompiled[0] == 0)
- {
- string infoLog = GL.GetShaderInfoLog(vertexShader);
- GL.DeleteShader(vertexShader);
- throw new ShaderCompilationFailedException("Failed to compile vertex shader:\n" + infoLog);
- }
+ GL.ShaderSource(vertex, vertexCode);
+ GL.CompileShader(vertex);
- int fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
- GL.ShaderSource(fragmentShader, fragmentShaderSource);
- GL.CompileShader(fragmentShader);
-
- GL.GetShader(fragmentShader, ShaderParameter.CompileStatus, isCompiled);
- if (isCompiled[0] == 0)
+ if (!Compiled(vertex))
{
- string infoLog = GL.GetShaderInfoLog(fragmentShader);
- GL.DeleteShader(fragmentShader);
- GL.DeleteShader(vertexShader);
- throw new ShaderCompilationFailedException("Failed to compile fragment shader:\n" + infoLog);
+ GL.DeleteShader(vertex);
+ throw new Exception("Failed to compile vertex shader: " + GL.GetShaderInfoLog(vertex));
}
-
- int program = GL.CreateProgram();
-
- GL.AttachShader(program, vertexShader);
- GL.AttachShader(program, fragmentShader);
-
- GL.LinkProgram(program);
-
- int[] isLinked = new int[1];
- GL.GetProgram(program, GetProgramParameterName.LinkStatus, isLinked);
- if (isLinked[0] == 0)
- {
- string infoLog = GL.GetProgramInfoLog(program);
- GL.DeleteProgram(program);
- GL.DeleteShader(fragmentShader);
- GL.DeleteShader(vertexShader);
- throw new ShaderCompilationFailedException("Failed to link shader program");
- }
-
- GL.DetachShader(program, vertexShader);
- GL.DetachShader(program, fragmentShader);
- GL.DeleteShader(vertexShader);
- GL.DeleteShader(fragmentShader);
-
- id = program;
- }
-
- public void Use()
- {
- GL.UseProgram(id);
- }
-
- public void SetUniform(string name, Matrix4 value)
- {
- int uniformLocation = GL.GetUniformLocation(id, name);
-
- GL.UniformMatrix4(uniformLocation, false, ref value);
- }
-
- public void SetUniform(string name, Vector3 value)
- {
- int uniformLocation = GL.GetUniformLocation(id, name);
-
- GL.Uniform3(uniformLocation, ref value);
- }
-
- public void SetUniform(string name, float value)
- {
- int uniformLocation = GL.GetUniformLocation(id, name);
-
- GL.Uniform1(uniformLocation, value);
}
- public void Delete()
+ private bool Compiled(int shader)
{
- GL.DeleteProgram(id);
+ int[] output = new int[1];
+ GL.GetShader(shader, ShaderParameter.CompileStatus, output);
+ return output[0] != 0;
}
}
}
diff --git a/Unicity.Renderer/ShaderCompilationFailedException.cs b/Unicity.Renderer/ShaderCompilationFailedException.cs
deleted file mode 100644
index ab40cea..0000000
--- a/Unicity.Renderer/ShaderCompilationFailedException.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System;
-
-namespace Unicity.Renderer
-{
- class ShaderCompilationFailedException : Exception
- {
- public ShaderCompilationFailedException(string message) : base(message) { }
- }
-}
diff --git a/Unicity.Renderer/Shapes/Rectangle.cs b/Unicity.Renderer/Shapes/Rectangle.cs
deleted file mode 100644
index 2239426..0000000
--- a/Unicity.Renderer/Shapes/Rectangle.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-namespace Unicity.Renderer.Shapes
-{
- public class Rectangle : Shape
- {
- Triangle rect1 = null;
- Triangle rect2 = null;
-
- public Rectangle(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)
- {
- rect1 = new Triangle(x1, y1, z1, x2, y2, z2, x3, y3, z3);
- rect2 = new Triangle(x3, y3, z3, x2, y2, z2, x4, y4, z4);
- }
-
- internal override void Draw(Shader shader, GraphicsRenderer renderer)
- {
- rect1.Draw(shader, renderer);
- rect2.Draw(shader, renderer);
- }
-
- public override void Dispose()
- {
- rect1.Dispose();
- rect2.Dispose();
- }
- }
-}
diff --git a/Unicity.Renderer/Shapes/Shape.cs b/Unicity.Renderer/Shapes/Shape.cs
deleted file mode 100644
index 8e6e322..0000000
--- a/Unicity.Renderer/Shapes/Shape.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-
-namespace Unicity.Renderer.Shapes
-{
- public class Shape : IDisposable
- {
- internal virtual void Draw(Shader shader, GraphicsRenderer renderer)
- {
-
- }
-
- public virtual void Dispose()
- {
-
- }
- }
-}
diff --git a/Unicity.Renderer/Shapes/Triangle.cs b/Unicity.Renderer/Shapes/Triangle.cs
deleted file mode 100644
index 7ab94e2..0000000
--- a/Unicity.Renderer/Shapes/Triangle.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using OpenTK.Graphics.OpenGL4;
-
-namespace Unicity.Renderer.Shapes
-{
- public class Triangle : Shape
- {
- int vao = 0;
- int vbo = 0;
-
- float[] vertices = null;
-
- public Triangle(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3)
- {
- vertices = new float[]
- {
- x1, y1, z1,
- x2, y2, z2,
- x3, y3, z3
- };
-
- vao = GL.GenVertexArray();
- vbo = GL.GenBuffer();
-
- GL.BindVertexArray(vao);
- GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
-
- GL.BufferData(BufferTarget.ArrayBuffer, vertices.Length * sizeof(float), vertices, BufferUsageHint.StaticDraw);
-
- GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), 0);
- GL.EnableVertexAttribArray(0);
-
- }
-
- internal override void Draw(Shader shader, GraphicsRenderer renderer)
- {
- GL.BindVertexArray(vao);
- GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
-
- float[] newVertices = new float[vertices.Length];
-
- GL.DrawArrays(PrimitiveType.Triangles, 0, 3);
- }
-
- public override void Dispose()
- {
- GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
- GL.DeleteBuffer(vbo);
- }
- }
-}
diff --git a/Unicity.Renderer/Unicity.Renderer.csproj b/Unicity.Renderer/Unicity.Renderer.csproj
index e82117f..6ea5c1b 100644
--- a/Unicity.Renderer/Unicity.Renderer.csproj
+++ b/Unicity.Renderer/Unicity.Renderer.csproj
@@ -4,10 +4,10 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{F6EBB1F8-FCA9-4A8D-A807-E877CD047908}</ProjectGuid>
+ <ProjectGuid>{7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Unicity.Renderer</RootNamespace>
- <AssemblyName>Renderer</AssemblyName>
+ <AssemblyName>Unicity.Renderer</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
@@ -41,7 +41,6 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
- <Reference Include="System.Drawing" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@@ -50,35 +49,20 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
- <Compile Include="Camera.cs" />
<Compile Include="GraphicsRenderer.cs" />
- <Compile Include="Properties\Resources.Designer.cs">
- <AutoGen>True</AutoGen>
- <DesignTime>True</DesignTime>
- <DependentUpon>Resources.resx</DependentUpon>
- </Compile>
- <Compile Include="RenderWindow.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="RenderWindow.cs" />
<Compile Include="Shader.cs" />
- <Compile Include="ShaderCompilationFailedException.cs" />
- <Compile Include="Shapes\Rectangle.cs" />
- <Compile Include="Shapes\Shape.cs" />
- <Compile Include="Shapes\Triangle.cs" />
- <Compile Include="WindowCreationFailedException.cs" />
</ItemGroup>
<ItemGroup>
<None Include="OpenTK.dll.config" />
<None Include="packages.config" />
- <None Include="Resources\fragmentShader.frag" />
- <None Include="Resources\vertexShader.vert" />
- </ItemGroup>
- <ItemGroup>
- <EmbeddedResource Include="Properties\Resources.resx">
- <Generator>ResXFileCodeGenerator</Generator>
- <SubType>Designer</SubType>
- <LastGenOutput>Resources.Designer.cs</LastGenOutput>
- </EmbeddedResource>
+ <None Include="shaders\test.frag">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </None>
+ <None Include="shaders\test.vert">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </None>
</ItemGroup>
- <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> \ No newline at end of file
diff --git a/Unicity.Renderer/WindowCreationFailedException.cs b/Unicity.Renderer/WindowCreationFailedException.cs
deleted file mode 100644
index 322c6e5..0000000
--- a/Unicity.Renderer/WindowCreationFailedException.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System;
-
-namespace Unicity.Renderer
-{
- class WindowCreationFailedException : Exception
- {
- public WindowCreationFailedException(string message) : base(message)
- {
-
- }
- }
-}
diff --git a/Unicity.Renderer/shaders/test.frag b/Unicity.Renderer/shaders/test.frag
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/Unicity.Renderer/shaders/test.frag
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/Unicity.Renderer/shaders/test.vert b/Unicity.Renderer/shaders/test.vert
new file mode 100644
index 0000000..c087c1a
--- /dev/null
+++ b/Unicity.Renderer/shaders/test.vert
@@ -0,0 +1,8 @@
+#version 400 core
+
+layout (location = 0) in vec3 aPos;
+
+void main()
+{
+ gl_Position = vec4(aPos, 1.0);
+} \ No newline at end of file
diff --git a/Unicity.sln b/Unicity.sln
index edd6888..5abddca 100644
--- a/Unicity.sln
+++ b/Unicity.sln
@@ -3,9 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29418.71
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unicity.RenderTest", "Unicity.RenderTest\Unicity.RenderTest.csproj", "{0155C998-9189-4C19-8DCC-13499797C7EA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unicity.Engine", "Unicity.Engine\Unicity.Engine.csproj", "{CBF47ABD-0454-496A-B3E3-848D27317C59}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unicity.Renderer", "Unicity.Renderer\Unicity.Renderer.csproj", "{F6EBB1F8-FCA9-4A8D-A807-E877CD047908}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unicity.Game", "Unicity.Game\Unicity.Game.csproj", "{4C824664-944B-4DCA-89BE-8CF16D249F51}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unicity.Renderer", "Unicity.Renderer\Unicity.Renderer.csproj", "{7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -13,14 +15,18 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F6EBB1F8-FCA9-4A8D-A807-E877CD047908}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F6EBB1F8-FCA9-4A8D-A807-E877CD047908}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F6EBB1F8-FCA9-4A8D-A807-E877CD047908}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F6EBB1F8-FCA9-4A8D-A807-E877CD047908}.Release|Any CPU.Build.0 = Release|Any CPU
- {0155C998-9189-4C19-8DCC-13499797C7EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0155C998-9189-4C19-8DCC-13499797C7EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0155C998-9189-4C19-8DCC-13499797C7EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0155C998-9189-4C19-8DCC-13499797C7EA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CBF47ABD-0454-496A-B3E3-848D27317C59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CBF47ABD-0454-496A-B3E3-848D27317C59}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CBF47ABD-0454-496A-B3E3-848D27317C59}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CBF47ABD-0454-496A-B3E3-848D27317C59}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C824664-944B-4DCA-89BE-8CF16D249F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4C824664-944B-4DCA-89BE-8CF16D249F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C824664-944B-4DCA-89BE-8CF16D249F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4C824664-944B-4DCA-89BE-8CF16D249F51}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE