facecam2d/src/modelpart.cpp

44 lines
1 KiB
C++
Raw Normal View History

2021-01-01 16:20:09 +00:00
#include <GL/glew.h>
#include <glm/mat4x4.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <graphics.hpp>
#include <modelpart.hpp>
#include <iostream>
ModelPart::ModelPart() {
}
ModelPart::ModelPart(const char* texPath, GLuint transUniformNum) {
//create vbo, ebo, vao
initBuffers(&vao);
//create texture
initTexture(&tex[0], texPath);
2021-01-01 16:20:09 +00:00
transUniform = transUniformNum;
empty = false;
2021-01-01 16:20:09 +00:00
}
void ModelPart::bindAndDraw() {
if (empty) { return; }
2021-01-01 16:20:09 +00:00
glBindVertexArray(vao);
glBindTexture(GL_TEXTURE_2D, tex[texSelection]);
2021-01-01 16:20:09 +00:00
glUniformMatrix4fv(transUniform, 1, GL_FALSE, glm::value_ptr(transMatrix));
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
}
2021-01-03 15:11:35 +00:00
void ModelPart::setTransform(glm::vec2 position, float scale) {
transMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(position.x, -position.y, 0.0f));
2021-01-03 15:11:35 +00:00
transMatrix = glm::scale(transMatrix, glm::vec3(scale, scale, scale));
}
void ModelPart::addTexture(const char* texPath, size_t slot) {
initTexture(&tex[slot], texPath);
}
void ModelPart::selectTexture(size_t slot) {
texSelection = slot;
2021-01-01 16:20:09 +00:00
}