renderer.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "renderer.h"
  2. #include <glad/glad.h>
  3. #include <glm/gtc/matrix_transform.hpp>
  4. Renderer::Renderer(Shader shader, glm::vec2 position, glm::vec2 size, float rotate, glm::vec3 color)
  5. : m_shader(shader), m_position(position), m_size(size), m_rotate(rotate), m_color(color) {
  6. this->init();
  7. }
  8. void Renderer::draw() {
  9. this->m_shader.use();
  10. glm::mat4 model = glm::mat4(1.0f);
  11. model = glm::translate(model, glm::vec3(m_position, 0.0f));
  12. model = glm::translate(model, glm::vec3(0.5f * m_size.x, 0.5f * m_size.y, 0.0f)); // move origin of rotation to center of quad
  13. model = glm::rotate(model, glm::radians(m_rotate), glm::vec3(0.0f, 0.0f, 1.0f)); // then rotate
  14. model = glm::translate(model, glm::vec3(-0.5f * m_size.x, -0.5f * m_size.y, 0.0f)); // move origin back
  15. model = glm::scale(model, glm::vec3(m_size, 1.0f)); // last scale
  16. this->m_shader.setMatrix4("model", model);
  17. // render textured quad
  18. this->m_shader.setVector3f("spriteColor", m_color);
  19. //glActiveTexture(GL_TEXTURE0);
  20. //texture.Bind();
  21. glBindVertexArray(this->m_vao);
  22. glDrawArrays(GL_TRIANGLES, 0, 6);
  23. glBindVertexArray(0);
  24. }
  25. void Renderer::init()
  26. {
  27. // configure VAO/VBO
  28. unsigned int VBO;
  29. float vertices[] = {
  30. // pos // tex
  31. 0.0f, 1.0f, 0.0f, 1.0f,
  32. 1.0f, 0.0f, 1.0f, 0.0f,
  33. 0.0f, 0.0f, 0.0f, 0.0f,
  34. 0.0f, 1.0f, 0.0f, 1.0f,
  35. 1.0f, 1.0f, 1.0f, 1.0f,
  36. 1.0f, 0.0f, 1.0f, 0.0f
  37. };
  38. glGenVertexArrays(1, &this->m_vao);
  39. glGenBuffers(1, &VBO);
  40. glBindBuffer(GL_ARRAY_BUFFER, VBO);
  41. glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
  42. glBindVertexArray(this->m_vao);
  43. glEnableVertexAttribArray(0);
  44. glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), (void*)0);
  45. glBindBuffer(GL_ARRAY_BUFFER, 0);
  46. glBindVertexArray(0);
  47. }