From 573eb0dc44da073462e24f15a253a51a4013ee58 Mon Sep 17 00:00:00 2001 From: Adrian Ulbrich Date: Sat, 9 Nov 2019 02:44:29 +0100 Subject: Added support for colored triangles --- Unicity.Renderer/GraphicsRenderer.cs | 24 +++++++++++++++++++++++- Unicity.Renderer/Shapes/Triangle.cs | 2 +- Unicity.Renderer/shaders/test.frag | 1 - Unicity.Renderer/shaders/test.vert | 4 ++-- 4 files changed, 26 insertions(+), 5 deletions(-) (limited to 'Unicity.Renderer') 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 -- cgit v1.2.3