From 19976e03886c0ce88302992c3c384f2bd0e8deff Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Tue, 27 Feb 2024 19:06:56 +0100 Subject: [PATCH] Update GenericMesh --- PCK-Studio/Rendering/GenericMesh.cs | 23 +++++++++++------------ PCK-Studio/Rendering/SkinRenderer.cs | 7 ++++++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/PCK-Studio/Rendering/GenericMesh.cs b/PCK-Studio/Rendering/GenericMesh.cs index dbc7e313..72b646e4 100644 --- a/PCK-Studio/Rendering/GenericMesh.cs +++ b/PCK-Studio/Rendering/GenericMesh.cs @@ -51,6 +51,15 @@ namespace PckStudio.Rendering _layout = new T().GetLayout(); } + internal void Initialize() + { + vertexArray = new VertexArray(); + vertexBuffer = new VertexBuffer(); + indexBuffer = new IndexBuffer(); + vertexArray.AddBuffer(vertexBuffer, _layout); + drawContext = new DrawContext(vertexArray, indexBuffer, drawType); + } + protected void ResetBuffers() { indicesOffset = 0; @@ -60,18 +69,8 @@ namespace PckStudio.Rendering protected void Submit() { - indexBuffer?.Dispose(); - vertexBuffer.Dispose(); - vertexArray ??= new VertexArray(); - - var vertexData = vertices.ToArray(); - vertexBuffer = new VertexBuffer(vertexData.Length * SizeInBytes); - vertexBuffer.SetData(vertexData); - - vertexArray.AddBuffer(vertexBuffer, _layout); - - indexBuffer = IndexBuffer.Create(indices.ToArray()); - drawContext = new DrawContext(vertexArray, indexBuffer, drawType); + vertexBuffer.SetData(vertices.ToArray()); + indexBuffer.SetIndicies(indices.ToArray()); } public void Draw(ShaderProgram shader) diff --git a/PCK-Studio/Rendering/SkinRenderer.cs b/PCK-Studio/Rendering/SkinRenderer.cs index fe7d4eeb..a9207a94 100644 --- a/PCK-Studio/Rendering/SkinRenderer.cs +++ b/PCK-Studio/Rendering/SkinRenderer.cs @@ -295,8 +295,13 @@ namespace PckStudio.Rendering MakeCurrent(); InitializeShaders(); InitializeFramebuffer(); - UploadMeshData(); Renderer.SetClearColor(BackColor); + foreach (var item in meshStorage) + { + item.Value.Initialize(); + } + UploadMeshData(); + GLErrorCheck(); initialized = true; }