diff --git a/headers/camera.hpp b/headers/camera.hpp index 01d78e0..e21f414 100644 --- a/headers/camera.hpp +++ b/headers/camera.hpp @@ -10,6 +10,7 @@ public: void setRotate(float yaw, float pitch); glm::mat4 getView(); glm::mat4 getProjection(); + float aspect; private: void update(); @@ -20,6 +21,5 @@ private: float yaw; float pitch; float fov; - float aspect; }; #endif diff --git a/src/camera.cpp b/src/camera.cpp index 5f7f89d..c5863de 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -3,8 +3,8 @@ #include Camera::Camera(glm::vec3 pos, float yaw, float pitch, float fov, float aspect) - : up(glm::vec3(0, 1, 0)), pos(pos), yaw(yaw), pitch(pitch), fov(fov), - aspect(aspect) { + : aspect(aspect), up(glm::vec3(0, 1, 0)), pos(pos), yaw(yaw), pitch(pitch), + fov(fov) { update(); } diff --git a/src/main.cpp b/src/main.cpp index 65f806c..650f07d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,9 +2,8 @@ #include "camera.hpp" #include #include +#include #include -#include -#include #include #include #include @@ -62,26 +61,25 @@ int main(void) { Camera *cam = new Camera(glm::vec3(0.0, 0.0, 5.0), -90.0f, 0.0f, 45.0, 800.0 / 600); + glfwSetWindowUserPointer(window, cam); + glEnable(GL_DEPTH_TEST); while (!glfwWindowShouldClose(window)) { glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); shaderProgram->use(); - shaderProgram->setInt("Tex0", 0); shaderProgram->setMat4("view", cam->getView()); shaderProgram->setMat4("projection", cam->getProjection()); glBindVertexArray(VAO); - glEnable(GL_DEPTH_TEST); + texture->bind(GL_TEXTURE0); + texture2->bind(GL_TEXTURE1); + glActiveTexture(GL_TEXTURE0); for (unsigned int i = 0; i < 10; i++) { - if (i % 2 == 0) { - texture->bind(GL_TEXTURE0); - } else { - texture2->bind(GL_TEXTURE0); - } + shaderProgram->setInt("tex0", i%2); glm::mat4 model = glm::mat4(1.0f); model = glm::translate(model, cubePositions[i]); @@ -113,4 +111,7 @@ void processInput(GLFWwindow *window) { void framebuffer_size_callback(GLFWwindow *window, int width, int height) { UNUSED(window); glViewport(0, 0, width, height); + Camera *cam = (Camera *)glfwGetWindowUserPointer(window); + if (cam) + cam->aspect = (float)width/height; } diff --git a/src/texture.cpp b/src/texture.cpp index df777db..85e0c00 100644 --- a/src/texture.cpp +++ b/src/texture.cpp @@ -25,7 +25,7 @@ Texture::Texture(GLenum type, const char *path) : type(type) { stbi_image_free(data); }; -Texture::~Texture() {} +Texture::~Texture() {glDeleteTextures(1, &ID);} void Texture::bind(GLenum texture) { glActiveTexture(texture);