This commit is contained in:
IlyaShurupov 2024-04-12 16:27:21 +03:00
parent a9fbb909ac
commit e161fffc0c

View file

@ -5,32 +5,56 @@
using namespace tp; using namespace tp;
struct Shape { struct Shape {
float buffer[6] = { float buffer[8] = {
0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, //
0, 1, // 1, 1, 0, 0,
}; };
GLuint vbo_id = 0; unsigned int indices[6] = { 0, 1, 3, 1, 2, 3 };
GLuint vbo_len = 6;
GLuint VAO = 0;
GLuint VBO = 0;
GLuint EBO = 0;
Shape() { Shape() {
glGenBuffers(1, &vbo_id); glGenVertexArrays(1, &VAO);
glBindBuffer(GL_ARRAY_BUFFER, vbo_id); glGenBuffers(1, &VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(buffer), buffer, GL_STATIC_COPY); glGenBuffers(1, &EBO);
}
void drawCall() { glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
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); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float), nullptr);
glEnableVertexAttribArray(0); glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3); // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glDisableVertexAttribArray(0);
glBindVertexArray(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) : Render::Render(Vec2F renderResolution) :
@ -61,7 +85,7 @@ void Render::render(const Geometry& geometry, Vec2F size) {
static auto uniform_scale = mDefaultShader.getu("Viewport"); static auto uniform_scale = mDefaultShader.getu("Viewport");
RGBA col = { 0, 0, 1.f, 1.f }; 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); viewport.w = viewport.z * (size.y / size.x);
glUniform4fv(uniform_color, 1, &col.r); glUniform4fv(uniform_color, 1, &col.r);