Renderer.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "rendering/Renderer.h"
  2. #include "gaming-core/wrapper/GL.h"
  3. Renderer::Renderer(Shader& shader) : shader(shader), texture(true), color(true) {
  4. shader.use();
  5. GL::enableBlending();
  6. setTextureMode(false);
  7. setColorMode(false);
  8. }
  9. void Renderer::pop() {
  10. stack.pop();
  11. }
  12. void Renderer::push() {
  13. stack.push();
  14. }
  15. void Renderer::update() {
  16. shader.setMatrix("model", stack.peek().getValues());
  17. }
  18. Renderer& Renderer::scale(float sx, float sy) {
  19. stack.peek().scale(Vector3(sx, sy, 1.0f));
  20. return *this;
  21. }
  22. Renderer& Renderer::scale(float s) {
  23. stack.peek().scale(s);
  24. return *this;
  25. }
  26. Renderer& Renderer::translate(float tx, float ty) {
  27. stack.peek().translateX(tx).translateY(ty);
  28. return *this;
  29. }
  30. Renderer& Renderer::translateX(float tx) {
  31. stack.peek().translateX(tx);
  32. return *this;
  33. }
  34. Renderer& Renderer::translateY(float ty) {
  35. stack.peek().translateY(ty);
  36. return *this;
  37. }
  38. Renderer& Renderer::translateTo(float tx, float ty) {
  39. stack.peek().translateTo(Vector3(tx, ty, 0.0f));
  40. return *this;
  41. }
  42. Renderer& Renderer::rotate(float degrees) {
  43. stack.peek().rotateZ(degrees);
  44. return *this;
  45. }
  46. void Renderer::setTextureMode(bool b) {
  47. if(b != texture) {
  48. texture = b;
  49. shader.setInt("useTexture", b);
  50. }
  51. }
  52. void Renderer::setColorMode(bool b) {
  53. if(b != color) {
  54. color = b;
  55. shader.setInt("useColor", b);
  56. }
  57. }
  58. void Renderer::setStringSize(int size) {
  59. fontRenderer.setSize(size);
  60. }
  61. float Renderer::drawString(float x, float y, const char* text) {
  62. setTextureMode(true);
  63. setColorMode(true);
  64. return fontRenderer.drawString(x, y, text);
  65. }
  66. void Renderer::drawTriangle(const ColorRenderer::Vertex& v1, const ColorRenderer::Vertex& v2,
  67. const ColorRenderer::Vertex& v3) {
  68. setTextureMode(false);
  69. setColorMode(true);
  70. colorRenderer.draw(v1, v2, v3);
  71. }
  72. void Renderer::drawTriangle(float x1, float y1, float x2, float y2, float x3, float y3, Color4 color) {
  73. ColorRenderer::Vertex v1 = {x1, y1, color};
  74. ColorRenderer::Vertex v2 = {x2, y2, color};
  75. ColorRenderer::Vertex v3 = {x3, y3, color};
  76. drawTriangle(v1, v2, v3);
  77. }
  78. void Renderer::drawRectangle(float x, float y, float width, float height, Color4 color) {
  79. drawTriangle(x, y, x + width, y, x, y + height, color);
  80. drawTriangle(x + width, y, x, y + height, x + width, y + height, color);
  81. }