another try at fixing the mesh class (maybe mesh class is not the problem after all?)
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Gitea Actions Demo / Scan the project (push) Successful in 20s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Gitea Actions Demo / Scan the project (push) Successful in 20s
				
			This commit is contained in:
		| @ -28,6 +28,7 @@ namespace Nebulix | ||||
| 				result[resultIdx] = array[i].X; | ||||
| 				result[resultIdx + 1] = array[i].Y; | ||||
| 				result[resultIdx + 2] = array[i].Z; | ||||
| 				resultIdx += 3; | ||||
| 			} | ||||
|  | ||||
| 			return result; | ||||
|  | ||||
| @ -46,12 +46,16 @@ namespace Nebulix.Rendering | ||||
| 		 | ||||
| 		// getting called by "Engine" which currently is in another assembly, meaning I probably need to make this public | ||||
| 		// needs to be change for the real engine | ||||
| 		/// <summary> | ||||
| 		/// Binds the necessary buffers and draws the mesh. Does not use any Shaders  | ||||
| 		/// </summary> | ||||
| 		/// <param name="gl"></param> | ||||
| 		public void Render(GL gl) | ||||
| 		{ | ||||
| 			if (regenerate) Generate(gl); | ||||
|  | ||||
| 			gl.BindVertexArray(vao); | ||||
| 			gl.DrawElements(PrimitiveType.Triangles, (uint)vertices.Length * 3, DrawElementsType.UnsignedInt, 0); | ||||
| 			gl.DrawElements(PrimitiveType.Triangles, (uint)indices.Length, DrawElementsType.UnsignedInt, 0); | ||||
| 		} | ||||
|  | ||||
| 		private unsafe void Generate(GL gl) | ||||
| @ -60,13 +64,13 @@ namespace Nebulix.Rendering | ||||
|  | ||||
| 			if(vao == 0) | ||||
| 				vao = gl.CreateVertexArray(); | ||||
| 			gl.BindVertexArray(vao); | ||||
|  | ||||
| 			if(vbo == 0) | ||||
| 				vbo = gl.GenBuffer(); | ||||
| 			if(ebo == 0)  | ||||
| 				ebo = gl.GenBuffer(); | ||||
|  | ||||
| 			gl.BindVertexArray(vao); | ||||
|  | ||||
| 			List<float> meshData = new(vertices.Length * 3 + normals.Length * 3); | ||||
| 			meshData.AddRange(vertices.ExtractComponents()); | ||||
| 			//meshData.AddRange(normals.ExtractComponents()); | ||||
|  | ||||
| @ -1,4 +1,6 @@ | ||||
| namespace Engine_silk.NET; | ||||
| using Nebulix; | ||||
|  | ||||
| namespace Engine_silk.NET; | ||||
|  | ||||
| using Engine_silk.NET.Textures; | ||||
| using Nebulix.InputSystem; | ||||
| @ -28,9 +30,9 @@ public static class Program | ||||
| 	private static Texture2D _texture; | ||||
| 	private static Camera _cam; | ||||
| 	private static Vector2 _lastMousePosition; | ||||
| 	private static uint _vao, _vbo, _ebo; | ||||
| 	private static uint _vao, _vbo; | ||||
| 	private static Sphere sphere; | ||||
|  | ||||
| 	private static Mesh testMesh; | ||||
|  | ||||
| 	public static void Main(string[] args) | ||||
| 	{ | ||||
| @ -118,37 +120,13 @@ public static class Program | ||||
| 			-0.5f,  0.5f,  0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 0.0f, | ||||
| 			-0.5f,  0.5f, -0.5f,  0.0f,  1.0f,  0.0f,  0.0f, 1.0f | ||||
| 		}; | ||||
|  | ||||
| 		ReadOnlySpan<float> verticesData = new(vertices); | ||||
| 		//uint[] indices = | ||||
| 		//{ | ||||
| 		//	0u, 1u, 3u, | ||||
| 		//	1u, 2u, 3u, | ||||
|  | ||||
| 		//	4u, 5u, 7u, | ||||
| 		//	5u, 6u, 7u, | ||||
|  | ||||
| 		//	3u, 2u, 7u, | ||||
| 		//	7u, 2u, 6u, | ||||
|  | ||||
| 		//	0u, 4u, 5u, | ||||
| 		//	0u, 5u, 1u, | ||||
|  | ||||
| 		//	0u, 3u, 7u, | ||||
| 		//	0u, 7u, 4u, | ||||
|  | ||||
| 		//	1u, 6u, 5u, | ||||
| 		//	1u, 2u, 6u | ||||
| 		//}; | ||||
|  | ||||
| 		_vbo = _gl.GenBuffer(); | ||||
| 		_gl.BindBuffer(BufferTargetARB.ArrayBuffer, _vbo); | ||||
| 		_gl.BufferData(BufferTargetARB.ArrayBuffer, (nuint)(verticesData.Length * sizeof(float)), verticesData, BufferUsageARB.StaticDraw); | ||||
| 		 | ||||
| 		//_ebo = _gl.GenBuffer(); | ||||
| 		//_gl.BindBuffer(BufferTargetARB.ElementArrayBuffer, _ebo); | ||||
| 		//fixed (uint* buffer = indices) | ||||
| 		//	_gl.BufferData(BufferTargetARB.ElementArrayBuffer, (nuint)(indices.Length * sizeof(uint)), buffer, BufferUsageARB.StaticDraw); | ||||
|  | ||||
| 		_shader = new Nebulix.Rendering.Shader(_gl, "shader.vert", "shader.frag"); | ||||
|  | ||||
| 		_gl.EnableVertexAttribArray(0); | ||||
| @ -166,6 +144,24 @@ public static class Program | ||||
| 		sphere.CreateSphere(); | ||||
| 		_sphereShader = | ||||
| 			new Nebulix.Rendering.Shader(_gl, "./Shaders/Sphere/sphere.vert", "./Shaders/Sphere/sphere.frag"); | ||||
|  | ||||
| 		testMesh = new Mesh | ||||
| 		{ | ||||
| 			Vertices = | ||||
| 			[ | ||||
| 				new Vector3D<float>(0.5f, 0.5f, 0.0f), | ||||
| 				new Vector3D<float>(0.5f, -0.5f, 0.0f), | ||||
| 				new Vector3D<float>(-0.5f, -0.5f, 0.0f), | ||||
| 				new Vector3D<float>(-0.5f, 0.5f, 0.5f) | ||||
| 			], | ||||
| 			Indices = | ||||
| 			[ | ||||
| 				0u, 1u, 3u, | ||||
| 				1u, 2u, 3u | ||||
| 			] | ||||
| 		}; | ||||
| 		testMesh.CalculateNormals(); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	private static void OnUpdate(double deltaTime) | ||||
| @ -203,24 +199,26 @@ public static class Program | ||||
| 		var viewMatrix = _cam.ViewMatrix; | ||||
| 		var projectionMatrix = Matrix4X4.CreatePerspectiveFieldOfView(Maths.Convert.ToRadians(_cam.Fov), Width / (float)Height, 0.1f, 100.0f); | ||||
| 		 | ||||
| 		// _shader.Use(); | ||||
| 		// _shader.SetMatrix("modelMatrix", modelMatrix); | ||||
| 		// _shader.SetMatrix("projectionMatrix", projectionMatrix); | ||||
| 		// _shader.SetMatrix("viewMatrix", viewMatrix); | ||||
| 		// | ||||
| 		// _shader.SetInt("tex", 0); | ||||
| 		// _texture.Bind(); | ||||
| 		// | ||||
| 		_shader.Use(); | ||||
| 		_shader.SetMatrix("modelMatrix", modelMatrix); | ||||
| 		_shader.SetMatrix("projectionMatrix", projectionMatrix); | ||||
| 		_shader.SetMatrix("viewMatrix", viewMatrix); | ||||
| 		 | ||||
| 		_shader.SetInt("tex", 0); | ||||
| 		_texture.Bind(); | ||||
| 		 | ||||
| 		// _gl.BindVertexArray(_vao); | ||||
| 		// _gl.DrawArrays(PrimitiveType.Triangles, 0, 36); | ||||
|  | ||||
| 		// Sphere | ||||
| 		// modelMatrix = Matrix4x4.CreateTranslation(1, 0, 1); | ||||
| 		modelMatrix = Matrix4x4.CreateTranslation(0, 0, 0); | ||||
| 		_sphereShader.Use(); | ||||
| 		_sphereShader.SetMatrix("modelMatrix", modelMatrix); | ||||
| 		_sphereShader.SetMatrix("projectionMatrix", projectionMatrix); | ||||
| 		_sphereShader.SetMatrix("viewMatrix", viewMatrix); | ||||
| 		sphere.RenderSphere(_gl); | ||||
|  | ||||
| 		// sphere.RenderSphere(_gl); | ||||
| 		testMesh.Render(_gl); | ||||
|  | ||||
| 		// var f = new Face(-Vector3D<float>.UnitX, 10); | ||||
| 		// f.GetMesh().Render(_gl); | ||||
|  | ||||
| @ -1,7 +1,8 @@ | ||||
| #version 330 core | ||||
|  | ||||
| layout (location = 0) in vec3 aPosition; | ||||
| layout (location = 1) in vec3 normalVector; | ||||
| //layout (location = 1) in vec3 normalVector; | ||||
|  | ||||
|  | ||||
| uniform mat4 modelMatrix; | ||||
| uniform mat4 viewMatrix; | ||||
| @ -13,7 +14,6 @@ out vec3 FragPos; | ||||
| void main() | ||||
| { | ||||
|     vec4 pos = vec4(aPosition, 1.0); | ||||
|  | ||||
|     // TODO: calculate the inverse of the model matrix beforehand since "inverse()" is very costly to calculate for every vertex | ||||
| //    Normal = mat3(transpose(inverse(modelMatrix))) * normalVector; | ||||
|     FragPos = vec3(modelMatrix * pos); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user