diff --git a/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.fs b/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.fs new file mode 100644 index 0000000..a5fcb2a --- /dev/null +++ b/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.fs @@ -0,0 +1,47 @@ +#version 330 core +out vec4 FragColor; + +in VS_OUT{ + vec3 FragPos; + vec3 Normal; + vec2 TexCoords; +}fs_in; + +uniform sampler2D floorTexture; +uniform vec3 lightPos; +uniform vec3 viewPos; +uniform bool blinn; + +void main() +{ + // Ϊɫ + vec3 color = texture(floorTexture, fs_in.TexCoords).rgb; + // + float ambientStrength = 0.05; + vec3 ambient = ambientStrength * color; + // + vec3 lightDir = normalize(lightPos - fs_in.FragPos); + vec3 normal = normalize(fs_in.Normal); + float diff = max(dot(normal, lightDir), 0.0); + vec3 diffuse = diff * color; + // + vec3 viewDir = normalize(viewPos - fs_in.FragPos); // ǹ۲߷򣬲ǹ۲߿ķ + float spec = 0.0; + if(blinn){ + // blinn-pong̷뷨߷ĵ + // + vec3 halfwayDir = normalize(lightDir + viewDir); + spec = pow(max(dot(normal, halfwayDir), 0.0), 1); + } + else + { + // pong۲߷뷴䷽ĵ + vec3 reflectDir = reflect(-lightDir, normal); + spec = pow(max(dot(viewDir, reflectDir), 0.0), 1); + } + float specularStrength = 0.3; + vec3 specular = specularStrength * spec * vec3(1);// Ҫɫdz1ʾɫΪɫ + FragColor = vec4(ambient + diffuse + specular, 1.0); + // FragColor = vec4(diffuse + specular, 1.0); + // FragColor = vec4(1.0); +} \ No newline at end of file diff --git a/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.vs b/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.vs new file mode 100644 index 0000000..b4a268b --- /dev/null +++ b/LearnOpenGL/assest/shader/5高级光照/5.1.1.blinn.vs @@ -0,0 +1,22 @@ +#version 330 core +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec3 aNormal; +layout (location = 2) in vec2 aTexCoords; +out VS_OUT{ + vec3 FragPos; + vec3 Normal; + vec2 TexCoords; +}vs_out; + +uniform mat4 projection; +uniform mat4 view; +uniform mat4 model; + +void main() +{ + // Ȼûmodelռ䣬modelǵλ󣬿ΪѾռ + vs_out.FragPos = aPos; + vs_out.Normal = aNormal; + vs_out.TexCoords = aTexCoords; + gl_Position = projection * view * vec4(aPos, 1.0); +} diff --git a/LearnOpenGL/src/Main/1入门/1.7变换.cpp b/LearnOpenGL/src/Main/1入门/1.7变换.cpp index 4799854..194e9ad 100644 --- a/LearnOpenGL/src/Main/1入门/1.7变换.cpp +++ b/LearnOpenGL/src/Main/1入门/1.7变换.cpp @@ -2,8 +2,9 @@ #include #include -//#include -#include "Shader/Shader.h" +#include "Core/Shader/Shader.h" +#include "Core/Camera/Camera.h" +#include #include #include @@ -55,7 +56,7 @@ int main() // build and compile our shader zprogram // ------------------------------------ - Shader ourShader("assest/shader/1.7.texture.vs", "assest/shader/1.7.texture.fs"); + Shader ourShader("assest/shader/1/1.7.texture.vs", "assest/shader/1/1.7.texture.fs"); // set up vertex data (and buffer(s)) and configure vertex attributes // ------------------------------------------------------------------ @@ -156,8 +157,6 @@ int main() // or set it via the texture class ourShader.setInt("texture2", 1); - - // render loop // ----------- while (!glfwWindowShouldClose(window)) @@ -184,6 +183,7 @@ int main() glm::mat4 trans = glm::mat4(1.0f); trans = glm::translate(trans, glm::vec3(0.5, -0.5, 0.0)); trans = glm::rotate(trans, (float)glfwGetTime(), glm::vec3(0.0, 0.0, 1.0)); + trans = glm::scale(trans, glm::vec3(0.5, 0.5, 0.5)); unsigned int transformLoc = glGetUniformLocation(ourShader.ID, "transform"); glUniformMatrix4fv(transformLoc, 1, GL_FALSE, glm::value_ptr(trans)); diff --git a/LearnOpenGL/src/Main/4高级OpenGL/4.11.4抗锯齿-自定义帧缓冲离屏渲染+采样颜色纹理.cpp b/LearnOpenGL/src/Main/4高级OpenGL/4.11.4抗锯齿-自定义帧缓冲离屏渲染+采样颜色纹理.cpp index 7854701..8b9076f 100644 --- a/LearnOpenGL/src/Main/4高级OpenGL/4.11.4抗锯齿-自定义帧缓冲离屏渲染+采样颜色纹理.cpp +++ b/LearnOpenGL/src/Main/4高级OpenGL/4.11.4抗锯齿-自定义帧缓冲离屏渲染+采样颜色纹理.cpp @@ -245,9 +245,10 @@ int main() // 3.ʼ󶨻ʱ glBindFramebuffer(GL_FRAMEBUFFER, 0); - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // ߿ǺɫģΪɫIJſü + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // Ϊ߿Ⱦʱܿ߿ǺɫģΪɫIJſü glClear(GL_COLOR_BUFFER_BIT); - glDisable(GL_DEPTH_TEST); // ȲԣĻռıβȲԶ + // ҪȲԣĻռıβȲԶʵ㣺ʱquadzΪʲôǻᱻ + glDisable(GL_DEPTH_TEST); // 4.quadʱ֡ɫ嵱ɫ screenShader.use(); diff --git a/LearnOpenGL/src/Main/5高级光照/5.1.1.高级光照-blinn.cpp b/LearnOpenGL/src/Main/5高级光照/5.1.1.高级光照-blinn.cpp new file mode 100644 index 0000000..4b6b1c8 --- /dev/null +++ b/LearnOpenGL/src/Main/5高级光照/5.1.1.高级光照-blinn.cpp @@ -0,0 +1,355 @@ +#include +#include +#include + +#include +#include +#include + +#include "Core/Shader/Shader.h" +#include "Core/Camera/Camera.h" +#include + +using namespace std; + +void framebuffer_size_callback(GLFWwindow* window, int width, int height); +void mouse_callback(GLFWwindow* window, double xpos, double ypos); +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset); +void processInput(GLFWwindow* window); +unsigned int loadTexture(const char *path); + +// settings +const unsigned int SCR_WIDTH = 1280; +const unsigned int SCR_HEIGHT = 720; + +// camera +Camera camera(glm::vec3(0.0f, 0.0f, 3.0f)); +float lastX = SCR_WIDTH / 2.0f; +float lastY = SCR_HEIGHT / 2.0f; +bool firstMouse = true; + +// timing +float deltaTime = 0.0f; +float lastFrame = 0.0f; + +// lighting +glm::vec3 lightPos(0, 0, 0.0f); +bool blinn = false; +bool blinnKeyPressed = false; + +int main() +{ + // glfw: initialize and configure + // ------------------------------ + glfwInit(); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + +#ifdef __APPLE__ + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); +#endif + + // glfw window creation + // -------------------- + GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); + if (window == NULL) + { + std::cout << "Failed to create GLFW window" << std::endl; + glfwTerminate(); + return -1; + } + glfwMakeContextCurrent(window); + glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); + glfwSetCursorPosCallback(window, mouse_callback); + glfwSetScrollCallback(window, scroll_callback); + + // tell GLFW to capture our mouse + glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + + // glad: load all OpenGL function pointers + // --------------------------------------- + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + std::cout << "Failed to initialize GLAD" << std::endl; + return -1; + } + + // configure global opengl state + // ----------------------------- + glEnable(GL_DEPTH_TEST); + + // build and compile our shader zprogram + // ------------------------------------ + // Ĺshader + Shader lightingShader("assest/shader/5߼/5.1.1.blinn.vs", "assest/shader/5߼/5.1.1.blinn.fs"); // Դshader + Shader lightCubeShader("assest/shader/2/2.1.2.light_cube.vs", "assest/shader/2/2.1.2.light_cube.fs"); + + // set up vertex data (and buffer(s)) and configure vertex attributes + // ------------------------------------------------------------------ + float vertices[] = { + -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + 0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + 0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + -0.5f, 0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, -1.0f, + + -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + 0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + -0.5f, 0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, + + -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f, + -0.5f, 0.5f, -0.5f, -1.0f, 0.0f, 0.0f, + -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f, + -0.5f, -0.5f, -0.5f, -1.0f, 0.0f, 0.0f, + -0.5f, -0.5f, 0.5f, -1.0f, 0.0f, 0.0f, + -0.5f, 0.5f, 0.5f, -1.0f, 0.0f, 0.0f, + + 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, + 0.5f, 0.5f, -0.5f, 1.0f, 0.0f, 0.0f, + 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f, + 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f, + 0.5f, -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, + 0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, + + -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, + 0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, + 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, + 0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, + -0.5f, -0.5f, 0.5f, 0.0f, -1.0f, 0.0f, + -0.5f, -0.5f, -0.5f, 0.0f, -1.0f, 0.0f, + + -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, + 0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, + 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, + 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, + -0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, + -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f + }; + float planeVertices[] = { + // positions // normals // texcoords + 10.0f, -0.5f, 10.0f, 0.0f, 1.0f, 0.0f, 10.0f, 0.0f, + -10.0f, -0.5f, 10.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, + -10.0f, -0.5f, -10.0f, 0.0f, 1.0f, 0.0f, 0.0f, 10.0f, + + 10.0f, -0.5f, 10.0f, 0.0f, 1.0f, 0.0f, 10.0f, 0.0f, + -10.0f, -0.5f, -10.0f, 0.0f, 1.0f, 0.0f, 0.0f, 10.0f, + 10.0f, -0.5f, -10.0f, 0.0f, 1.0f, 0.0f, 10.0f, 10.0f + }; + // first, configure the cube's VAO (and VBO) + unsigned int planeVBO, planeVAO; + glGenVertexArrays(1, &planeVAO); + glBindVertexArray(planeVAO); + glGenBuffers(1, &planeVBO); + glBindBuffer(GL_ARRAY_BUFFER, planeVBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(planeVertices), planeVertices, GL_STATIC_DRAW); + // position attribute + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0); + glEnableVertexAttribArray(0); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float))); + glEnableVertexAttribArray(1); + glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); + glEnableVertexAttribArray(2); + + // second, configure the light's VAO (VBO stays the same; the vertices are the same for the light object which is also a 3D cube) + unsigned int lightCubeVAO,lightCubeVBO; + glGenVertexArrays(1, &lightCubeVAO); + glBindVertexArray(lightCubeVAO); + glGenBuffers(1, &lightCubeVBO); + glBindBuffer(GL_ARRAY_BUFFER, lightCubeVBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0); + glEnableVertexAttribArray(0); + + unsigned int floorTexture = loadTexture("assest/textures/wood.png"); + + lightingShader.use(); + lightingShader.setInt("texture1", 0); + + for (float i = 0; i <= 0.1; i += 0.01) { + float spec = pow(i, 0.2); + cout << "pow("<< i <<", 0.2):" << spec << endl; + } + cout << "---" << endl; + for (float i = 2; i <= 2.1; i += 0.01) { + float spec = pow(i, 0.2); + cout << "pow(" << i << ", 0.2):" << spec << endl; + } + cout << "---" << endl; + float spec = pow(-0.1, 0.2); + cout << "pow(-0.1, 0.2):" << spec << endl; + cout << "---" << endl; + spec = pow(-2, 2); + cout << "pow(-2, 2):" << spec << endl; + // render loop + // ----------- + while (!glfwWindowShouldClose(window)) + { + // per-frame time logic + // -------------------- + float currentFrame = static_cast(glfwGetTime()); + deltaTime = currentFrame - lastFrame; + lastFrame = currentFrame; + + // input + // ----- + processInput(window); + + // render + // ------ + glClearColor(0.1f, 0.1f, 0.1f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // be sure to activate shader when setting uniforms/drawing objects + lightingShader.use(); + // view/projection transformations + glm::mat4 projection = glm::perspective(glm::radians(camera.Zoom), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); + glm::mat4 view = camera.GetViewMatrix(); + lightingShader.setMat4("projection", projection); + lightingShader.setMat4("view", view); + lightingShader.setMat4("model", glm::mat4(1.0f)); + + lightingShader.setInt("blinn", blinn); + lightingShader.setVec3("viewPos", camera.Position); + lightingShader.setVec3("lightPos", lightPos); + + // render the cube + glBindVertexArray(planeVAO); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, floorTexture); + glDrawArrays(GL_TRIANGLES, 0, 36); + + // also draw the lamp object + lightCubeShader.use(); + lightCubeShader.setMat4("projection", projection); + lightCubeShader.setMat4("view", view); + glm::mat4 model = glm::mat4(1.0f); + model = glm::translate(model, lightPos); + model = glm::scale(model, glm::vec3(0.2f)); // a smaller cube + lightCubeShader.setMat4("model", model); + + //glBindVertexArray(lightCubeVAO); + //glDrawArrays(GL_TRIANGLES, 0, 36); + + //std::cout << (blinn ? "Blinn - Phone" : "Phong") << std::endl; + + // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) + // ------------------------------------------------------------------------------- + glfwSwapBuffers(window); + glfwPollEvents(); + } + + // optional: de-allocate all resources once they've outlived their purpose: + // ------------------------------------------------------------------------ + + // glfw: terminate, clearing all previously allocated GLFW resources. + // ------------------------------------------------------------------ + glfwTerminate(); + return 0; +} + +// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly +// --------------------------------------------------------------------------------------------------------- +void processInput(GLFWwindow* window) +{ + if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) + glfwSetWindowShouldClose(window, true); + + if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) + camera.ProcessKeyboard(FORWARD, deltaTime); + if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) + camera.ProcessKeyboard(BACKWARD, deltaTime); + if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) + camera.ProcessKeyboard(LEFT, deltaTime); + if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) + camera.ProcessKeyboard(RIGHT, deltaTime); + + if (glfwGetKey(window, GLFW_KEY_V) == GLFW_PRESS) { + blinn = false; + } + if (glfwGetKey(window, GLFW_KEY_B) == GLFW_PRESS) { + blinn = true; + } +} + +// glfw: whenever the window size changed (by OS or user resize) this callback function executes +// --------------------------------------------------------------------------------------------- +void framebuffer_size_callback(GLFWwindow* window, int width, int height) +{ + // make sure the viewport matches the new window dimensions; note that width and + // height will be significantly larger than specified on retina displays. + glViewport(0, 0, width, height); +} + + +// glfw: whenever the mouse moves, this callback is called +// ------------------------------------------------------- +void mouse_callback(GLFWwindow* window, double xposIn, double yposIn) +{ + float xpos = static_cast(xposIn); + float ypos = static_cast(yposIn); + + if (firstMouse) + { + lastX = xpos; + lastY = ypos; + firstMouse = false; + } + + float xoffset = xpos - lastX; + float yoffset = lastY - ypos; // reversed since y-coordinates go from bottom to top + + lastX = xpos; + lastY = ypos; + + camera.ProcessMouseMovement(xoffset, yoffset); +} + +// glfw: whenever the mouse scroll wheel scrolls, this callback is called +// ---------------------------------------------------------------------- +void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) +{ + camera.ProcessMouseScroll(static_cast(yoffset)); +} +// utility function for loading a 2D texture from file +// --------------------------------------------------- +unsigned int loadTexture(char const* path) +{ + unsigned int textureID; + glGenTextures(1, &textureID); + + int width, height, nrComponents; + unsigned char* data = stbi_load(path, &width, &height, &nrComponents, 0); + if (data) + { + GLenum format; + if (nrComponents == 1) + format = GL_RED; + else if (nrComponents == 3) + format = GL_RGB; + else if (nrComponents == 4) + format = GL_RGBA; + + glBindTexture(GL_TEXTURE_2D, textureID); + glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); + glGenerateMipmap(GL_TEXTURE_2D); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, format == GL_RGBA ? GL_CLAMP_TO_EDGE : GL_REPEAT); // for this tutorial: use GL_CLAMP_TO_EDGE to prevent semi-transparent borders. Due to interpolation it takes texels from next repeat + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, format == GL_RGBA ? GL_CLAMP_TO_EDGE : GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + stbi_image_free(data); + } + else + { + std::cout << "Texture failed to load at path: " << path << std::endl; + stbi_image_free(data); + } + + return textureID; +} \ No newline at end of file diff --git a/LearnOpenGL/src/Main/4高级OpenGL/Test.cpp b/LearnOpenGL/src/Main/5高级光照/Test.cpp similarity index 100% rename from LearnOpenGL/src/Main/4高级OpenGL/Test.cpp rename to LearnOpenGL/src/Main/5高级光照/Test.cpp diff --git a/LearnOpenGL/vendor/std_image/stb_use.cpp b/LearnOpenGL/vendor/std_image/stb_use.cpp deleted file mode 100644 index badb3ef..0000000 --- a/LearnOpenGL/vendor/std_image/stb_use.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#define STB_IMAGE_IMPLEMENTATION -#include "stb_image.h" \ No newline at end of file diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.ilk b/LearnOpenGL/x64/Debug/LearnOpenGL.ilk index c45cf9f..606e7c9 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.ilk and b/LearnOpenGL/x64/Debug/LearnOpenGL.ilk differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.command.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.command.1.tlog index 2989be9..5f4f876 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.command.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.command.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.read.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.read.1.tlog index 80ea68a..18a24e2 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.read.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.read.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.write.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.write.1.tlog index 1cf4623..b537e51 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.write.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/CL.write.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.command.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.command.1.tlog index d0d28ce..12884aa 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.command.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.command.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.read.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.read.1.tlog index 7bc64fd..e49a823 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.read.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.read.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.write.1.tlog b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.write.1.tlog index bbbd432..db018f3 100644 Binary files a/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.write.1.tlog and b/LearnOpenGL/x64/Debug/LearnOpenGL.tlog/link.write.1.tlog differ diff --git a/LearnOpenGL/x64/Debug/vc142.idb b/LearnOpenGL/x64/Debug/vc142.idb index 27d0cfd..f83d7d6 100644 Binary files a/LearnOpenGL/x64/Debug/vc142.idb and b/LearnOpenGL/x64/Debug/vc142.idb differ diff --git a/LearnOpenGL/x64/Debug/vc142.pdb b/LearnOpenGL/x64/Debug/vc142.pdb index 239af0c..8865007 100644 Binary files a/LearnOpenGL/x64/Debug/vc142.pdb and b/LearnOpenGL/x64/Debug/vc142.pdb differ diff --git a/x64/Debug/LearnOpenGL.pdb b/x64/Debug/LearnOpenGL.pdb index 0e4cfe4..8f5375d 100644 Binary files a/x64/Debug/LearnOpenGL.pdb and b/x64/Debug/LearnOpenGL.pdb differ