From 3b214e75effaca1ba67daaf29d0a94e5b0129386 Mon Sep 17 00:00:00 2001 From: Adrian Ulbrich Date: Fri, 8 Nov 2019 23:56:17 +0100 Subject: Started work on actual engine --- Unicity.Renderer/Camera.cs | 50 -------- Unicity.Renderer/GraphicsRenderer.cs | 102 ++++------------- Unicity.Renderer/Properties/AssemblyInfo.cs | 12 +- Unicity.Renderer/Properties/Resources.Designer.cs | 83 -------------- Unicity.Renderer/Properties/Resources.resx | 127 --------------------- Unicity.Renderer/RenderWindow.cs | 89 +++++---------- Unicity.Renderer/Resources/fragmentShader.frag | 10 -- Unicity.Renderer/Resources/vertexShader.vert | 19 --- Unicity.Renderer/Shader.cs | 92 +++------------ .../ShaderCompilationFailedException.cs | 9 -- Unicity.Renderer/Shapes/Rectangle.cs | 26 ----- Unicity.Renderer/Shapes/Shape.cs | 17 --- Unicity.Renderer/Shapes/Triangle.cs | 50 -------- Unicity.Renderer/Unicity.Renderer.csproj | 34 ++---- Unicity.Renderer/WindowCreationFailedException.cs | 12 -- Unicity.Renderer/shaders/test.frag | 1 + Unicity.Renderer/shaders/test.vert | 8 ++ 17 files changed, 90 insertions(+), 651 deletions(-) delete mode 100644 Unicity.Renderer/Camera.cs delete mode 100644 Unicity.Renderer/Properties/Resources.Designer.cs delete mode 100644 Unicity.Renderer/Properties/Resources.resx delete mode 100644 Unicity.Renderer/Resources/fragmentShader.frag delete mode 100644 Unicity.Renderer/Resources/vertexShader.vert delete mode 100644 Unicity.Renderer/ShaderCompilationFailedException.cs delete mode 100644 Unicity.Renderer/Shapes/Rectangle.cs delete mode 100644 Unicity.Renderer/Shapes/Shape.cs delete mode 100644 Unicity.Renderer/Shapes/Triangle.cs delete mode 100644 Unicity.Renderer/WindowCreationFailedException.cs create mode 100644 Unicity.Renderer/shaders/test.frag create mode 100644 Unicity.Renderer/shaders/test.vert (limited to 'Unicity.Renderer') 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 @@ -//------------------------------------------------------------------------------ -// -// 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. -// -//------------------------------------------------------------------------------ - -namespace Unicity.Renderer.Properties { - using System; - - - /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. - /// - // 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() { - } - - /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. - /// - [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; - } - } - - /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. - /// - internal static byte[] fragmentShader { - get { - object obj = ResourceManager.GetObject("fragmentShader", resourceCulture); - return ((byte[])(obj)); - } - } - - /// - /// Sucht eine lokalisierte Ressource vom Typ System.Byte[]. - /// - 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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\fragmentShader.frag;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\vertexShader.vert;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ 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 @@ Debug AnyCPU - {F6EBB1F8-FCA9-4A8D-A807-E877CD047908} + {7C0C6E9F-6BC9-4825-B657-8DACE26CF4FD} Library Unicity.Renderer - Renderer + Unicity.Renderer v4.7.2 512 true @@ -41,7 +41,6 @@ - @@ -50,35 +49,20 @@ - - - True - True - Resources.resx - - + - - - - - - - - - - - ResXFileCodeGenerator - Designer - Resources.Designer.cs - + + Always + + + Always + - \ 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 -- cgit v1.2.3