From e161fffc0cec8f516a8091186fbed4489361e2e8 Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Fri, 12 Apr 2024 16:27:21 +0300 Subject: [PATCH] tmp --- GeometryEditor2D/private/Render.cpp | 56 ++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/GeometryEditor2D/private/Render.cpp b/GeometryEditor2D/private/Render.cpp index 5d18f1c..b1aee47 100644 --- a/GeometryEditor2D/private/Render.cpp +++ b/GeometryEditor2D/private/Render.cpp @@ -5,32 +5,56 @@ using namespace tp; struct Shape { - float buffer[6] = { - 0, 0, 1, 0, 0, 1, + float buffer[8] = { + 1, 1, 1, 0, 0, 0, // + 0, 1, // 1, 1, 0, 0, }; - GLuint vbo_id = 0; - GLuint vbo_len = 6; + unsigned int indices[6] = { 0, 1, 3, 1, 2, 3 }; + + GLuint VAO = 0; + GLuint VBO = 0; + GLuint EBO = 0; Shape() { - glGenBuffers(1, &vbo_id); - glBindBuffer(GL_ARRAY_BUFFER, vbo_id); - glBufferData(GL_ARRAY_BUFFER, sizeof(buffer), buffer, GL_STATIC_COPY); - } + glGenVertexArrays(1, &VAO); + glGenBuffers(1, &VBO); + glGenBuffers(1, &EBO); - void drawCall() { - glBindBuffer(GL_ARRAY_BUFFER, vbo_id); + glBindVertexArray(VAO); + + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(buffer), buffer, GL_STATIC_DRAW); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), nullptr); glEnableVertexAttribArray(0); - glDrawArrays(GL_TRIANGLES, 0, 3); - - glDisableVertexAttribArray(0); + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); } - ~Shape() { glDeleteBuffers(1, &vbo_id); } + void drawCall() { + const auto numPoints = sizeof(buffer) / (2 * sizeof(float)); + + glBindVertexArray(VAO); + + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + auto num = sizeof(indices) / sizeof(indices[0]); + glDrawElements(GL_TRIANGLES, num, GL_UNSIGNED_INT, nullptr); + + // glDrawArrays(GL_TRIANGLES, 0, sizeof(buffer) / (2 * sizeof(float))); + + // glBindVertexArray(0); + } + + ~Shape() { + glDeleteBuffers(1, &VBO); + glDeleteVertexArrays(1, &VAO); + } }; Render::Render(Vec2F renderResolution) : @@ -61,14 +85,14 @@ void Render::render(const Geometry& geometry, Vec2F size) { static auto uniform_scale = mDefaultShader.getu("Viewport"); RGBA col = { 0, 0, 1.f, 1.f }; - RectF viewport = { 0.0f, 0.0f, 1.f, 1.f }; + RectF viewport = { -1.0f, -1.0f, 3.f, 3.f }; viewport.w = viewport.z * (size.y / size.x); glUniform4fv(uniform_color, 1, &col.r); glUniform4fv(uniform_scale, 1, &viewport.x); shape.drawCall(); - + mDefaultShader.unbind(); }