123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #include "rendering/Renderer.h"
- #include "rendering/GL.h"
- Renderer::Renderer(Shader& shader)
- : shader(shader), texture(true), color(true) {
- }
- void Renderer::init() {
- shader.use();
- GL::enableBlending();
- setTextureMode(false);
- setColorMode(false);
- fontRenderer.init();
- colorRenderer.init();
- }
- void Renderer::pop() {
- stack.pop();
- }
- void Renderer::push() {
- stack.push();
- }
- void Renderer::update() {
- shader.setMatrix("model", stack.peek().getValues());
- }
- Renderer& Renderer::scale(float sx, float sy) {
- stack.peek().scale(Vector3(sx, sy, 1.0f));
- return *this;
- }
- Renderer& Renderer::scale(float s) {
- stack.peek().scale(s);
- return *this;
- }
- Renderer& Renderer::translate(const Vector2& v) {
- stack.peek().translateX(v[0]).translateY(v[1]);
- return *this;
- }
- Renderer& Renderer::translateX(float tx) {
- stack.peek().translateX(tx);
- return *this;
- }
- Renderer& Renderer::translateY(float ty) {
- stack.peek().translateY(ty);
- return *this;
- }
- Renderer& Renderer::translateTo(float tx, float ty) {
- stack.peek().translateTo(Vector3(tx, ty, 0.0f));
- return *this;
- }
- Renderer& Renderer::rotate(float degrees) {
- stack.peek().rotateZ(degrees);
- return *this;
- }
- void Renderer::setTextureMode(bool b) {
- if(b != texture) {
- texture = b;
- shader.setInt("useTexture", b);
- }
- }
- void Renderer::setColorMode(bool b) {
- if(b != color) {
- color = b;
- shader.setInt("useColor", b);
- }
- }
- void Renderer::setStringSize(int size) {
- fontRenderer.setSize(size);
- }
- float Renderer::drawString(float x, float y, const char* text) {
- setTextureMode(true);
- setColorMode(true);
- return fontRenderer.drawString(x, y, text);
- }
- void Renderer::drawTriangle(const ColorRenderer::Vertex& v1,
- const ColorRenderer::Vertex& v2,
- const ColorRenderer::Vertex& v3) {
- setTextureMode(false);
- setColorMode(true);
- colorRenderer.draw(v1, v2, v3);
- }
- void Renderer::drawTriangle(const Vector2& v1, const Vector2& v2,
- const Vector2& v3, Color4 color) {
- drawTriangle({v1, color}, {v2, color}, {v3, color});
- }
- void Renderer::drawRectangle(const Vector2& pos, const Vector2& size,
- Color4 color) {
- drawTriangle({pos[0], pos[1]}, {pos[0] + size[0], pos[1]},
- {pos[0], pos[1] + size[1]}, color);
- drawTriangle({pos[0] + size[0], pos[1]}, {pos[0], pos[1] + size[1]},
- {pos[0] + size[0], pos[1] + size[1]}, color);
- }
|