improve memory cleanup
still bad tho. we leak a-lot. idrc it's a testing repo.
This commit is contained in:
parent
6d6bac8ca1
commit
0f9f72af4e
@ -13,11 +13,13 @@ public:
|
||||
void setPosition(glm::vec3 p);
|
||||
void setScale(glm::vec3 s);
|
||||
void setRotation(glm::quat r);
|
||||
void setOwned(bool o);
|
||||
void setOwnedBuffers(bool o);
|
||||
void setOwnedShader(bool o);
|
||||
Shader *getShader();
|
||||
|
||||
private:
|
||||
bool buffersOwned;
|
||||
bool shaderOwned;
|
||||
int count;
|
||||
unsigned int VAO;
|
||||
Shader *shader;
|
||||
|
||||
@ -47,10 +47,13 @@ int main(void) {
|
||||
Shader *cubeShader = new Shader("./shaders/lighting/Vert.glsl",
|
||||
"./shaders/lighting/Frag.glsl");
|
||||
Mesh *cube = new Mesh(cubeShader, VAO, 36);
|
||||
cube->setOwnedShader(true);
|
||||
|
||||
Shader *lightShader = new Shader("./shaders/lighting/Vert.glsl",
|
||||
"./shaders/lighting/LightFrag.glsl");
|
||||
Mesh *light = new Mesh(lightShader, VAO, 36);
|
||||
light->setOwnedShader(true);
|
||||
|
||||
glm::vec3 lightPos = glm::vec3(1, 2.0f, 1);
|
||||
light->setPosition(lightPos);
|
||||
light->setScale(glm::vec3(.3));
|
||||
@ -87,6 +90,9 @@ int main(void) {
|
||||
processInput(window);
|
||||
}
|
||||
|
||||
delete cam;
|
||||
delete cube;
|
||||
delete light;
|
||||
glfwTerminate();
|
||||
return 0;
|
||||
}
|
||||
|
||||
17
src/mesh.cpp
17
src/mesh.cpp
@ -3,11 +3,18 @@
|
||||
#include <mesh.hpp>
|
||||
|
||||
Mesh::Mesh(Shader *s, unsigned int VAO, int count)
|
||||
: buffersOwned(false), count(count), VAO(VAO), shader(s),
|
||||
position(glm::vec3(0)), scale(glm::vec3(1)),
|
||||
: buffersOwned(false), shaderOwned(false), count(count), VAO(VAO),
|
||||
shader(s), position(glm::vec3(0)), scale(glm::vec3(1)),
|
||||
rotation(glm::quat(1.0f, 0.0f, 0.0f, 0.0f)) {}
|
||||
|
||||
Mesh::~Mesh() {}
|
||||
Mesh::~Mesh() {
|
||||
if (shaderOwned)
|
||||
delete shader;
|
||||
if (buffersOwned){
|
||||
glDeleteVertexArrays(1, &VAO);
|
||||
// TODO vbo, ibo
|
||||
}
|
||||
}
|
||||
|
||||
void Mesh::draw(Camera *c) {
|
||||
glm::mat4 model = glm::mat4(1);
|
||||
@ -28,6 +35,8 @@ void Mesh::setScale(glm::vec3 s) { scale = s; }
|
||||
|
||||
void Mesh::setRotation(glm::quat r) { rotation = r; }
|
||||
|
||||
void Mesh::setOwned(bool o) { buffersOwned = o; }
|
||||
void Mesh::setOwnedBuffers(bool o) { buffersOwned = o; }
|
||||
|
||||
void Mesh::setOwnedShader(bool o) { shaderOwned = o; }
|
||||
|
||||
Shader *Mesh::getShader() { return shader; }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user