Added Rendrerer class and camera optimization
This commit is contained in:
@@ -45,6 +45,12 @@ glm::mat4 OrtographicCamera::getProjectionMatrix() {
|
||||
return projection;
|
||||
}
|
||||
|
||||
glm::mat4 OrtographicCamera::getCombinedMatrix() {
|
||||
glm::mat4 combined;
|
||||
combined = getProjectionMatrix() * getViewMatrix();
|
||||
return combined;
|
||||
}
|
||||
|
||||
void OrtographicCamera::update() {
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ class OrtographicCamera {
|
||||
|
||||
glm::mat4 getViewMatrix();
|
||||
glm::mat4 getProjectionMatrix();
|
||||
glm::mat4 getCombinedMatrix();
|
||||
|
||||
void update();
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ DarkRP2D::~DarkRP2D() {
|
||||
delete obj;
|
||||
delete inputHandler;
|
||||
delete camera;
|
||||
delete renderer;
|
||||
}
|
||||
|
||||
void DarkRP2D::create () {
|
||||
@@ -18,6 +19,8 @@ void DarkRP2D::create () {
|
||||
assets->loadShader("vert.shader","frag.shader",nullptr,"defaultShader");
|
||||
assets->loadShader("bitmapvert.shader","bitmapfrag.shader",nullptr,"bitmapShader");
|
||||
|
||||
renderer = new Renderer();
|
||||
|
||||
std::vector<Vertex2D> vertices({
|
||||
Vertex2D{glm::vec2(-0.5f,-0.5f), glm::vec2(0.0f,1.0f)},
|
||||
Vertex2D{glm::vec2(0.5f,-0.5f), glm::vec2(1.0f,1.0f)},
|
||||
@@ -34,8 +37,6 @@ void DarkRP2D::create () {
|
||||
font = new BitmapFont("arial.ttf");
|
||||
|
||||
camera = new OrtographicCamera();
|
||||
|
||||
glClearColor(1.f,1.f,1.f,1.f);
|
||||
}
|
||||
|
||||
void DarkRP2D::loop(unsigned int delta) {
|
||||
@@ -72,14 +73,13 @@ void DarkRP2D::update(unsigned int delta) {
|
||||
}
|
||||
|
||||
void DarkRP2D::render(unsigned int delta) {
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
renderer->clear();
|
||||
|
||||
//Drawing
|
||||
Shader defaultShader = assets->getShader("defaultShader");
|
||||
defaultShader.SetMatrix4("view",camera->getViewMatrix(),true);
|
||||
defaultShader.SetMatrix4("projection",camera->getProjectionMatrix(),true);
|
||||
defaultShader.SetMatrix4("MVP",camera->getCombinedMatrix(),true);
|
||||
//Draw Mesh
|
||||
obj->draw();
|
||||
renderer->draw(*obj,defaultShader);
|
||||
|
||||
//texttest
|
||||
Shader bitmapShader = assets->getShader("bitmapShader");
|
||||
|
||||
@@ -6,6 +6,7 @@ class DarkRP2D;
|
||||
#include <vector>
|
||||
|
||||
#include "Assets.h"
|
||||
#include "Renderer.h"
|
||||
#include "Mesh.h"
|
||||
#include "InputHandler.h"
|
||||
#include "BitmapFont.h"
|
||||
@@ -15,6 +16,7 @@ class DarkRP2D {
|
||||
private:
|
||||
SDL_Window* gWindow;
|
||||
Assets *assets;
|
||||
Renderer* renderer;
|
||||
Mesh *obj;
|
||||
InputHandler *inputHandler;
|
||||
BitmapFont *font;
|
||||
|
||||
17
src/Mesh.cpp
17
src/Mesh.cpp
@@ -43,11 +43,14 @@ Mesh::~Mesh() {
|
||||
glDeleteBuffers(1,&VAO);
|
||||
}
|
||||
|
||||
void Mesh::draw() {
|
||||
//Bind Texture
|
||||
texture.Bind();
|
||||
//draw Mesh
|
||||
glBindVertexArray(this->VAO);
|
||||
glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0);
|
||||
glBindVertexArray(0);
|
||||
unsigned int Mesh::getIndicesCount() const {
|
||||
return indices.size();
|
||||
}
|
||||
|
||||
void Mesh::bindVAO() const {
|
||||
glBindVertexArray(this->VAO);
|
||||
}
|
||||
|
||||
void Mesh::bindTexture() const {
|
||||
texture.Bind();
|
||||
}
|
||||
|
||||
@@ -25,8 +25,9 @@ class Mesh {
|
||||
Mesh(std::vector<Vertex2D> vertices, std::vector<unsigned int> indices,Texture2D textures);
|
||||
~Mesh();
|
||||
|
||||
void draw();
|
||||
|
||||
unsigned int getIndicesCount() const;
|
||||
void bindVAO() const;
|
||||
void bindTexture() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
18
src/Renderer.cpp
Normal file
18
src/Renderer.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#include "Renderer.h"
|
||||
#include <GL/glew.h>
|
||||
|
||||
Renderer::Renderer() {
|
||||
glClearColor(1.f,1.f,1.f,1.f);
|
||||
}
|
||||
|
||||
void Renderer::draw(const Mesh& mesh, Shader& shader) {
|
||||
//Bind texture of mesh
|
||||
mesh.bindTexture();
|
||||
mesh.bindVAO();
|
||||
//draw Mesh
|
||||
glDrawElements(GL_TRIANGLES, mesh.getIndicesCount(), GL_UNSIGNED_INT, 0);
|
||||
}
|
||||
|
||||
void Renderer::clear() const {
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
14
src/Renderer.h
Normal file
14
src/Renderer.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef RENDERER_H
|
||||
#define RENDERER_H
|
||||
|
||||
#include "Mesh.h"
|
||||
#include "Shader.h"
|
||||
|
||||
class Renderer {
|
||||
public:
|
||||
Renderer();
|
||||
void draw(const Mesh& mesh, Shader& shader);
|
||||
void clear() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user