feat: assignment 2

This commit is contained in:
2025-10-13 15:04:53 +02:00
parent 986e31dbef
commit f981cee4e0
17 changed files with 649 additions and 56 deletions

33
src/mesh.cpp Normal file
View File

@@ -0,0 +1,33 @@
#include "mesh.h"
#include "buffer.h"
#include "shader.h"
#include "state.h"
void Mesh::addBuffer(const std::shared_ptr<Buffer>& buffer,
const std::shared_ptr<Shader>& shader)
{
buffers_.push_back(buffer);
shaders_.push_back(shader);
}
void Mesh::draw()
{
// Calculate MVP matrix
glm::mat4 mvp =
State::projectionMatrix * State::viewMatrix * State::modelMatrix;
// Draw each buffer with its shader
for (size_t i = 0; i < buffers_.size(); ++i) {
// Use buffer's shader if available, otherwise use default
// shader
std::shared_ptr<Shader> shader =
shaders_[i] ? shaders_[i] : State::defaultShader;
if (shader) {
shader->Use();
int mvpLoc = shader->getLocation("mvp");
Shader::setMat4(mvpLoc, mvp);
buffers_[i]->Draw(*shader);
}
}
}