diff options
| author | Adrian Ulbrich <adrian.ulbrich.2003@gmail.com> | 2019-11-09 02:44:29 +0100 |
|---|---|---|
| committer | Adrian Ulbrich <adrian.ulbrich.2003@gmail.com> | 2019-11-09 02:44:29 +0100 |
| commit | 573eb0dc44da073462e24f15a253a51a4013ee58 (patch) | |
| tree | 2866ef331702e36a0d4be6cb53c3799106ca4a85 | |
| parent | 6fd78657f010bcc48c746a7b1e6ae9a0589adf5b (diff) | |
| download | Unicity-573eb0dc44da073462e24f15a253a51a4013ee58.tar.gz Unicity-573eb0dc44da073462e24f15a253a51a4013ee58.tar.bz2 Unicity-573eb0dc44da073462e24f15a253a51a4013ee58.zip | |
Added support for colored triangles
| -rw-r--r-- | Unicity.Engine/GameWindow.cs | 3 | ||||
| -rw-r--r-- | Unicity.Renderer/GraphicsRenderer.cs | 24 | ||||
| -rw-r--r-- | Unicity.Renderer/Shapes/Triangle.cs | 2 | ||||
| -rw-r--r-- | Unicity.Renderer/shaders/test.frag | 1 | ||||
| -rw-r--r-- | Unicity.Renderer/shaders/test.vert | 4 |
5 files changed, 28 insertions, 6 deletions
diff --git a/Unicity.Engine/GameWindow.cs b/Unicity.Engine/GameWindow.cs index 7a765ca..1d1559b 100644 --- a/Unicity.Engine/GameWindow.cs +++ b/Unicity.Engine/GameWindow.cs @@ -21,7 +21,7 @@ namespace Unicity.Engine window = new RenderWindow(width, height, title); renderer = new GraphicsRenderer(window); - renderer.SetRenderData(new Shape[] { new Triangle(new float[] { -0.5f, -0.5f, 0.0f, 0.5f, -0.5f, 0.0f, 0.0f, 0.5f, 0.0f }, 1.0f, 1.0f, 0.0f) }); + renderer.SetRenderData(new Shape[] { new Triangle(new float[] { -1.0f, -0.5f, 0.0f, 0.0f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f }, 1.0f, 0.0f, 0.0f), new Triangle(new float[] { 0.0f, -0.5f, 0.0f, 1.0f, -0.5f, 0.0f, 0.5f, 0.5f, 0.0f }, 1.0f, 1.0f, 0.0f) }); } public void Open(double ups = 60.0, double fps = 60.0) @@ -42,6 +42,7 @@ namespace Unicity.Engine } // Dispose of unmanaged resources + renderer?.Dispose(); window?.Dispose(); disposed = true; diff --git a/Unicity.Renderer/GraphicsRenderer.cs b/Unicity.Renderer/GraphicsRenderer.cs index 1df8bfb..513439e 100644 --- a/Unicity.Renderer/GraphicsRenderer.cs +++ b/Unicity.Renderer/GraphicsRenderer.cs @@ -57,6 +57,23 @@ namespace Unicity.Renderer } } + for (int i = 0; i < shapes.Length; i++) + { + if (typeof(Triangle) == shapes[i].GetType()) + { + Vector3 color = ((Triangle)shapes[i]).Color; + triangleVerts.Add(color.X); + triangleVerts.Add(color.Y); + triangleVerts.Add(color.Z); + triangleVerts.Add(color.X); + triangleVerts.Add(color.Y); + triangleVerts.Add(color.Z); + triangleVerts.Add(color.X); + triangleVerts.Add(color.Y); + triangleVerts.Add(color.Z); + } + } + if (triangleVAO != -1) { GL.DeleteVertexArray(triangleVAO); @@ -67,9 +84,11 @@ namespace Unicity.Renderer GL.DeleteBuffer(triangleVBO); } + foreach (float v in triangleVerts) System.Console.WriteLine(v); + triangleVAO = GL.GenVertexArray(); triangleVBO = GL.GenBuffer(); - + GL.BindVertexArray(triangleVAO); GL.BindBuffer(BufferTarget.ArrayBuffer, triangleVBO); GL.BufferData(BufferTarget.ArrayBuffer, triangleVerts.Count * sizeof(float), triangleVerts.ToArray(), BufferUsageHint.DynamicDraw); @@ -77,6 +96,9 @@ namespace Unicity.Renderer GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), 0); GL.EnableVertexAttribArray(0); + GL.VertexAttribPointer(1, 3, VertexAttribPointerType.Float, false, 3 * sizeof(float), triangleVerts.Count / 2 * sizeof(float)); + GL.EnableVertexAttribArray(1); + GL.BindBuffer(BufferTarget.ArrayBuffer, 0); GL.BindVertexArray(0); } diff --git a/Unicity.Renderer/Shapes/Triangle.cs b/Unicity.Renderer/Shapes/Triangle.cs index d0145ff..347650e 100644 --- a/Unicity.Renderer/Shapes/Triangle.cs +++ b/Unicity.Renderer/Shapes/Triangle.cs @@ -5,7 +5,7 @@ namespace Unicity.Renderer.Shapes public class Triangle : Shape { internal float[] Vertices; - Vector3 Color; + internal Vector3 Color; public Triangle(float[] vertices, float red, float green, float blue) { diff --git a/Unicity.Renderer/shaders/test.frag b/Unicity.Renderer/shaders/test.frag index 58db0c6..8deca4b 100644 --- a/Unicity.Renderer/shaders/test.frag +++ b/Unicity.Renderer/shaders/test.frag @@ -1,7 +1,6 @@ #version 400 core out vec4 FragColor; - in vec4 vertexColor; void main() diff --git a/Unicity.Renderer/shaders/test.vert b/Unicity.Renderer/shaders/test.vert index c0395f0..99496c0 100644 --- a/Unicity.Renderer/shaders/test.vert +++ b/Unicity.Renderer/shaders/test.vert @@ -1,12 +1,12 @@ #version 400 core layout (location = 0) in vec3 aPos; +layout (location = 1) in vec3 aColor; out vec4 vertexColor; -uniform vec4 inColor; void main() { gl_Position = vec4(aPos, 1.0f); - vertexColor = inColor; + vertexColor = vec4(aColor, 1.0f); }
\ No newline at end of file |
