From a2adca27e587d1823a41f1bd1dc0409d338ec84c Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sun, 12 Mar 2023 17:32:42 +0100 Subject: [PATCH] feat: make code compliant with cpplint --- .vscode/extensions.json | 11 +- .vscode/settings.json | 1 + Engine/engine/beforeRender.cpp | 2 +- Engine/engine/beforeRender.hpp | 11 +- Engine/engine/constants.hpp | 70 ++++----- Engine/engine/draw.cpp | 260 ++++++++++++++++++++++++--------- Engine/engine/draw.hpp | 62 ++++++-- Engine/engine/match | Bin 719032 -> 713448 bytes Engine/engine/match.cpp | 21 +-- Engine/engine/misc.cpp | 7 +- Engine/engine/misc.hpp | 7 +- Engine/engine/renderLoop.cpp | 153 +++++++++++-------- Engine/engine/renderLoop.hpp | 31 +++- Engine/engine/shader.cpp | 80 +++++----- Engine/engine/shader.hpp | 20 ++- Engine/engine/shaders.cpp | 53 ++++--- Engine/engine/shaders.hpp | 17 ++- 17 files changed, 526 insertions(+), 280 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4cbaf99..eafb6d5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,6 @@ { "recommendations": [ "aaron-bond.better-comments", - "ms-vscode.cpptools", "jbenden.c-cpp-flylint", "ms-vscode.cpptools-themes", "twxs.cmake", @@ -12,8 +11,14 @@ "ms-vscode.makefile-tools", "pkief.material-icon-theme", "ms-vscode-remote.vscode-remote-extensionpack", - "slevesque.shader", "henriiik.vscode-sort", - "hbenl.test-adapter-converter" + "hbenl.test-adapter-converter", + "streetsidesoftware.code-spell-checker", + "wmaurer.change-case", + "usernamehw.errorlens", + "kisstkondoros.vscode-gutter-preview", + "davidanson.vscode-markdownlint", + "streetsidesoftware.code-spell-checker-polish", + "tyriar.sort-lines" ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index fb693c0..c2de956 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -99,6 +99,7 @@ "awesomeface", "kuchy", "multiplatform", + "RENDERLOOP", "VERTICE" ] } \ No newline at end of file diff --git a/Engine/engine/beforeRender.cpp b/Engine/engine/beforeRender.cpp index 7f08e11..7eef896 100644 --- a/Engine/engine/beforeRender.cpp +++ b/Engine/engine/beforeRender.cpp @@ -1,11 +1,11 @@ // "Copyright [2023] " #ifndef BEFORE_RENDER_CPP #define BEFORE_RENDER_CPP -#include "Engine/engine/beforeRender.hpp" #include #include #include +#include "./beforeRender.hpp" #include "./constants.hpp" #include "./misc.hpp" diff --git a/Engine/engine/beforeRender.hpp b/Engine/engine/beforeRender.hpp index 6f415da..0863d12 100644 --- a/Engine/engine/beforeRender.hpp +++ b/Engine/engine/beforeRender.hpp @@ -1,14 +1,17 @@ // "Copyright [2023] " -#ifndef BEFORE_RENDER_HPP -#define BEFORE_RENDER_HPP +#ifndef ENGINE_ENGINE_BEFORERENDER_HPP_ +#define ENGINE_ENGINE_BEFORERENDER_HPP_ #include void configureGLFW(const int GLFWMajorVersion, const int GLFWMinorVersion); void instantiateGLFWwindow(); GLFWwindow *createWindowObject(); int initializeGLAD(); -void framebuffer_size_callback(GLFWwindow *window, const int width, const int height); +void framebuffer_size_callback( + GLFWwindow *window, + const int width, + const int height); void viewPort(GLFWwindow *window); GLFWwindow *prepareForRender(); -#endif \ No newline at end of file +#endif // ENGINE_ENGINE_BEFORERENDER_HPP_ diff --git a/Engine/engine/constants.hpp b/Engine/engine/constants.hpp index 13cc794..23ee1b1 100644 --- a/Engine/engine/constants.hpp +++ b/Engine/engine/constants.hpp @@ -1,34 +1,34 @@ // "Copyright [2023] " -#ifndef CONSTANTS_HPP -#define CONSTANTS_HPP +#ifndef ENGINE_ENGINE_CONSTANTS_HPP_ +#define ENGINE_ENGINE_CONSTANTS_HPP_ #include #include #include -namespace constants -{ +namespace constants { inline constexpr int GLFW_MAJOR_VERSION { 3 }; inline constexpr int GLFW_MINOR_VERSION { 3 }; - // best practice is to use inline constexpr std::string_view but glfwCreateWindow takes only char* as input - inline const char* MAIN_WINDOW_NAME { "Match" }; + // best practice is to use inline constexpr + // std::string_view but glfwCreateWindow takes only char* as input + inline const char* MAIN_WINDOW_NAME { "Match" }; inline constexpr int MAIN_WINDOW_WIDTH { 800 }; inline constexpr int MAIN_WINDOW_HEIGHT { 600 }; - inline constexpr struct { + inline constexpr struct { GLfloat red = 1.0f; GLfloat green = 0.0f; GLfloat blue = 0.0f; GLfloat alpha = 1.0f; } RED; - inline constexpr struct { + inline constexpr struct { GLfloat red = 1.0f; GLfloat green = 1.0f; GLfloat blue = 1.0f; GLfloat alpha = 1.0f; } WHITE; - inline constexpr struct { + inline constexpr struct { GLfloat red = 0.2f; GLfloat green = 0.3f; GLfloat blue = 0.3f; @@ -46,8 +46,7 @@ namespace constants inline const char* VERTEX_SHADER_OFFSET_FILENAME { "./Shaders/vertexShaderOffset.vs" }; - - // we write vertex shader + // we write vertex shader // version of glsl (since ogl 3.3 same as ogl so we pick 330) // in this shader we just forward input data to shader output // DO NOT REMOVE UNTIL CAN DRAW SQUARE USING CLASS @@ -56,8 +55,7 @@ namespace constants "void main()\n" "{\n" " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" - "}\0" } ; - + "}\0" }; inline const char* VERTEX_SHADER_SOURCE_FILENAME { "./Shaders/vertexShaderSource.vs" }; @@ -101,7 +99,6 @@ namespace constants inline const char* FRAGMENT_SHADER_SOURCE_FILENAME { "./Shaders/fragmentShaderSource.fs" }; - inline const char* FRAGMENT_SHADER_SOURCE_YELLOW_FILENAME { "./Shaders/fragmentShaderSourceYellow.fs" }; @@ -119,26 +116,29 @@ namespace constants 0.0f, 0.5f, 0.0f }; - inline constexpr size_t TRIANGLE_VERTICES_SIZE = { sizeof(TRIANGLE_VERTICES) }; + inline constexpr size_t TRIANGLE_VERTICES_SIZE = { + sizeof(TRIANGLE_VERTICES) + }; inline constexpr float TRIANGLES_VERTICES[] { // first triangle - -0.9f, -0.5f, 0.0f, // left + -0.9f, -0.5f, 0.0f, // left -0.0f, -0.5f, 0.0f, // right - -0.45f, 0.5f, 0.0f, // top + -0.45f, 0.5f, 0.0f, // top // second triangle 0.0f, -0.5f, 0.0f, // left 0.9f, -0.5f, 0.0f, // right - 0.45f, 0.5f, 0.0f // top + 0.45f, 0.5f, 0.0f // top }; - inline constexpr size_t TRIANGLES_VERTICES_SIZE = { sizeof(TRIANGLES_VERTICES) }; + inline constexpr size_t TRIANGLES_VERTICES_SIZE = { + sizeof(TRIANGLES_VERTICES) }; inline constexpr float TRIANGLE_ONE[] { // first triangle - -0.9f, -0.5f, 0.0f, // left + -0.9f, -0.5f, 0.0f, // left -0.0f, -0.5f, 0.0f, // right - -0.45f, 0.5f, 0.0f, // top + -0.45f, 0.5f, 0.0f, // top }; inline constexpr size_t TRIANGLE_ONE_SIZE = { sizeof(TRIANGLE_ONE) }; @@ -147,7 +147,7 @@ namespace constants // second triangle 0.0f, -0.5f, 0.0f, // left 0.9f, -0.5f, 0.0f, // right - 0.45f, 0.5f, 0.0f // top + 0.45f, 0.5f, 0.0f // top }; inline constexpr size_t TRIANGLE_TWO_SIZE = { sizeof(TRIANGLE_TWO) }; @@ -156,7 +156,7 @@ namespace constants // positions // colors 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom right -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // bottom left - 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f // top + 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f // top }; inline constexpr size_t TRIANGLE_COLORS_SIZE = { sizeof(TRIANGLE_COLORS) }; @@ -179,7 +179,7 @@ namespace constants 0.5f, 0.5f, 0.0f, // top right 0.5f, -0.5f, 0.0f, // bottom right -0.25f, -0.5f, 0.0f, // bottom left - -0.25f, 0.5f, 0.0f // top left + -0.25f, 0.5f, 0.0f // top left }; inline constexpr unsigned int SQUARE_INDICES[] { @@ -196,23 +196,23 @@ namespace constants // https://learnopengl.com/img/getting-started/tex_coords.png inline constexpr float TEXTURE_VERTICES[] { // positions // colors // texture coords - 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right - 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right - -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left - -0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left + 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // top right + 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // bottom right + -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // bottom left + -0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f // top left }; - inline constexpr size_t TEXTURE_VERTICES_SIZE = { sizeof(TEXTURE_VERTICES) }; + inline constexpr size_t TEXTURE_VERTICES_SIZE = { + sizeof(TEXTURE_VERTICES) + }; inline constexpr unsigned int TEXTURE_INDICES[] { - 0, 1, 3, // first triangle - 1, 2, 3 // second triangle + 0, 1, 3, // first triangle + 1, 2, 3 // second triangle }; inline constexpr size_t TEXTURE_INDICES_SIZE = { sizeof(TEXTURE_INDICES) }; +} // namespace constants - -} - -#endif \ No newline at end of file +#endif // ENGINE_ENGINE_CONSTANTS_HPP_ diff --git a/Engine/engine/draw.cpp b/Engine/engine/draw.cpp index 1bbf8a1..7990d51 100644 --- a/Engine/engine/draw.cpp +++ b/Engine/engine/draw.cpp @@ -6,69 +6,134 @@ #include #include #include -#include "draw.hpp" -#include "renderLoop.hpp" -#include "shaders.hpp" -#include "constants.hpp" -#include "misc.hpp" -#include "shader.hpp" -#include "textures.hpp" -#include "stb_image.h" +#include +#include "./draw.hpp" +#include "./renderLoop.hpp" +#include "./shaders.hpp" +#include "./constants.hpp" +#include "./misc.hpp" +#include "./shader.hpp" +#include "./textures.hpp" +#include "./stb_image.h" -drawFigureReturn drawFigure(const int whatToDraw) -{ - switch (whatToDraw) - { +drawFigureReturn drawFigure(const int whatToDraw) { + switch (whatToDraw) { case 0: - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); + return drawTriangleClass( + constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); case 1: - return drawSquare(constants::SQUARE_VERTICES, constants::SQUARE_VERTICES_SIZE, constants::SQUARE_INDICES, constants::SQUARE_INDICES_SIZE, constants::VERTEX_SHADER_SOURCE, constants::FRAGMENT_SHADER_SOURCE); + return drawSquare( + constants::SQUARE_VERTICES, + constants::SQUARE_VERTICES_SIZE, + constants::SQUARE_INDICES, constants::SQUARE_INDICES_SIZE, + constants::VERTEX_SHADER_SOURCE, + constants::FRAGMENT_SHADER_SOURCE); case 2: - // Try to draw 2 triangles next to each other using glDrawArrays by adding more vertices to your data. - return drawTriangleClass(constants::TRIANGLES_VERTICES, constants::TRIANGLES_VERTICES_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); + // Try to draw 2 triangles next to each other + // using glDrawArrays by adding more vertices to your data. + return drawTriangleClass( + constants::TRIANGLES_VERTICES, + constants::TRIANGLES_VERTICES_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); case 3: - drawTriangleClass(constants::TRIANGLE_ONE, constants::TRIANGLE_ONE_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); - // Now create the same 2 triangles using two different VAOs and VBOs for their data - return drawTriangleClass(constants::TRIANGLE_TWO, constants::TRIANGLE_TWO_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); + drawTriangleClass(constants::TRIANGLE_ONE, + constants::TRIANGLE_ONE_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); + // Now create the same 2 triangles + // using two different VAOs and VBOs for their data + return drawTriangleClass( + constants::TRIANGLE_TWO, + constants::TRIANGLE_TWO_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); case 4: - drawTriangleClass(constants::TRIANGLE_ONE, constants::TRIANGLE_ONE_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); - // Create two shader programs where the second program uses a different fragment shader that outputs the color yellow; draw both triangles again where one outputs the color yellow - return drawTriangleClass(constants::TRIANGLE_TWO, constants::TRIANGLE_TWO_SIZE, constants::VERTEX_SHADER_SOURCE_FILENAME, constants::FRAGMENT_SHADER_SOURCE_YELLOW_FILENAME); + drawTriangleClass(constants::TRIANGLE_ONE, + constants::TRIANGLE_ONE_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); + /* + Create two shader programs where + the second program uses a different + fragment shader that outputs the color yellow; + draw both triangles again where one outputs the color yellow + */ + return drawTriangleClass( + constants::TRIANGLE_TWO, + constants::TRIANGLE_TWO_SIZE, + constants::VERTEX_SHADER_SOURCE_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_YELLOW_FILENAME); case 5: // Get color from vertex shader to fragment shader - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_COLOR_FILENAME, constants::FRAGMENT_SHADER_COLOR_FROM_VERTEX_FILENAME); + return drawTriangleClass(constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_COLOR_FILENAME, + constants::FRAGMENT_SHADER_COLOR_FROM_VERTEX_FILENAME); case 6: // set color from opengl code to uniform value in fragment shader - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_COLOR_FILENAME, constants::FRAGMENT_SHADER_UNIFORMS_FILENAME); + return drawTriangleClass(constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_COLOR_FILENAME, + constants::FRAGMENT_SHADER_UNIFORMS_FILENAME); case 7: // set color from opengl code to uniform value in fragment shader - return drawTriangleClass(constants::TRIANGLE_COLORS, constants::TRIANGLE_COLORS_SIZE, constants::VERTEX_SHADER_VERTICE_COLOR_FILENAME, constants::FRAGMENT_SHADER_COLOR_FROM_VERTEX_FILENAME, true); + return drawTriangleClass(constants::TRIANGLE_COLORS, + constants::TRIANGLE_COLORS_SIZE, + constants::VERTEX_SHADER_VERTICE_COLOR_FILENAME, + constants::FRAGMENT_SHADER_COLOR_FROM_VERTEX_FILENAME, + true); case 8: // upside down triangle - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_UPSIDE_DOWN_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME); + return drawTriangleClass(constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_UPSIDE_DOWN_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME); case 9: { // offset triangle offsetsStruct offsets = offsetsStruct(); offsets.xOffset = 0.5f; - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_OFFSET_FILENAME, constants::FRAGMENT_SHADER_SOURCE_FILENAME, false, false, offsets); + return drawTriangleClass(constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_OFFSET_FILENAME, + constants::FRAGMENT_SHADER_SOURCE_FILENAME, + false, + false, + offsets); } case 10: - return drawTriangleClass(constants::TRIANGLE_VERTICES, constants::TRIANGLE_VERTICES_SIZE, constants::VERTEX_SHADER_TASK_THREE_FILENAME, constants::FRAGMENT_SHADER_TASK_THREE_FILENAME); - case constants::MAX_DRAW_CALL: - return drawDebilMode(constants::VERTEX_SHADER_TEXTURE_FILENAME, constants::FRAGMENT_SHADER_TEXTURE_FILENAME, constants::TEXTURE_VERTICES, constants::TEXTURE_VERTICES_SIZE, constants::TEXTURE_INDICES, constants::TEXTURE_INDICES_SIZE); + return drawTriangleClass(constants::TRIANGLE_VERTICES, + constants::TRIANGLE_VERTICES_SIZE, + constants::VERTEX_SHADER_TASK_THREE_FILENAME, + constants::FRAGMENT_SHADER_TASK_THREE_FILENAME); + case constants::MAX_DRAW_CALL: + return drawDebilMode( + constants::VERTEX_SHADER_TEXTURE_FILENAME, + constants::FRAGMENT_SHADER_TEXTURE_FILENAME, + constants::TEXTURE_VERTICES, + constants::TEXTURE_VERTICES_SIZE, + constants::TEXTURE_INDICES, + constants::TEXTURE_INDICES_SIZE); default: throw "No function for this draw call"; } } -unsigned int getShaderProgram(const char* vertexShaderSource, const char* fragmentShaderSource) -{ - const std::pair shaders = compileShaders(vertexShaderSource, fragmentShaderSource); +unsigned int getShaderProgram( + const char* vertexShaderSource, + const char* fragmentShaderSource) { + const std::pair shaders = + compileShaders(vertexShaderSource, fragmentShaderSource); if (shaders.first == 0 || shaders.second == 0) return 0; - const unsigned int shaderProgram = linkShaderObjectsShaderProgram(shaders.first, shaders.second); + const unsigned int shaderProgram = + linkShaderObjectsShaderProgram(shaders.first, shaders.second); + if (shaderProgram == 0) return 0; return shaderProgram; @@ -80,8 +145,14 @@ void setOffsets(Shader shader, const offsetsStruct offsets) { shader.setFloat("zOffset", offsets.zOffset); } -drawFigureReturn drawTriangleClass(const float triangleVertices[], const size_t triangleVerticesSize, const char* vertexPath, const char* fragmentPath, const bool colorIncluded, const bool textureIncluded, const offsetsStruct offsets) -{ +drawFigureReturn drawTriangleClass( + const float triangleVertices[], + const size_t triangleVerticesSize, + const char* vertexPath, + const char* fragmentPath, + const bool colorIncluded, + const bool textureIncluded, + const offsetsStruct offsets) { // In your CPP file: // ====================== // float offset = 0.5f; @@ -90,12 +161,25 @@ drawFigureReturn drawTriangleClass(const float triangleVertices[], const size_t ourShader.use(); setOffsets(ourShader, offsets); - const unsigned int vertexBufferObject = copyVerticesMemory(triangleVertices, triangleVerticesSize, GL_ARRAY_BUFFER); + const unsigned int vertexBufferObject = + copyVerticesMemory( + triangleVertices, + triangleVerticesSize, + GL_ARRAY_BUFFER); const unsigned int vertexArrayObject = generateBindVAO(); - copyVerticesArray(vertexBufferObject, triangleVertices, triangleVerticesSize, GL_ARRAY_BUFFER); + copyVerticesArray( + vertexBufferObject, + triangleVertices, + triangleVerticesSize, + GL_ARRAY_BUFFER); // set vertex attribute pointers configureVertexAttribute(colorIncluded, textureIncluded); - doDrawArrays(ourShader.ID, vertexArrayObject, GL_TRIANGLES, 0, triangleVerticesSize); + doDrawArrays( + ourShader.ID, + vertexArrayObject, + GL_TRIANGLES, + 0, + triangleVerticesSize); drawFigureReturn newReturn; newReturn.success = 0; newReturn.VAO = vertexArrayObject; @@ -104,9 +188,18 @@ drawFigureReturn drawTriangleClass(const float triangleVertices[], const size_t return newReturn; } -drawFigureReturn drawSquare(const float squareVertices[], const size_t squareVerticesSize, const unsigned int squareIndices[], const size_t squareIndicesSize, const char* vertexShaderSource, const char* fragmentShaderSource, const bool colorIncluded, const bool textureIncluded, const offsetsStruct offsets) -{ - const unsigned int shaderProgram = getShaderProgram(vertexShaderSource, fragmentShaderSource); +drawFigureReturn drawSquare( + const float squareVertices[], + const size_t squareVerticesSize, + const unsigned int squareIndices[], + const size_t squareIndicesSize, + const char* vertexShaderSource, + const char* fragmentShaderSource, + const bool colorIncluded, + const bool textureIncluded, + const offsetsStruct offsets) { + const unsigned int shaderProgram = + getShaderProgram(vertexShaderSource, fragmentShaderSource); drawFigureReturn newReturn = drawFigureReturn(); if (shaderProgram == 0) { newReturn.success = -1; @@ -114,34 +207,57 @@ drawFigureReturn drawSquare(const float squareVertices[], const size_t squareVer } const unsigned int VAO = generateBindVAO(); copyVerticesMemory(squareVertices, squareVerticesSize, GL_ARRAY_BUFFER); - copyVerticesMemory(squareIndices, squareIndicesSize, GL_ELEMENT_ARRAY_BUFFER); + copyVerticesMemory( + squareIndices, + squareIndicesSize, + GL_ELEMENT_ARRAY_BUFFER); // set vertex attribute pointers configureVertexAttribute(colorIncluded, textureIncluded); - doDrawElements(shaderProgram, VAO, GL_TRIANGLES, GL_UNSIGNED_INT, squareIndicesSize); + doDrawElements( + shaderProgram, + VAO, + GL_TRIANGLES, + GL_UNSIGNED_INT, + squareIndicesSize); newReturn.success = 0; newReturn.VAO = VAO; return newReturn; } -drawFigureReturn drawDebilMode(const char* vertexPath, const char* fragmentPath, const float vertices[], const size_t verticesSize, const unsigned int indices[], const size_t indicesSize) { +drawFigureReturn drawDebilMode( + const char* vertexPath, + const char* fragmentPath, + const float vertices[], + const size_t verticesSize, + const unsigned int indices[], + const size_t indicesSize) { // https://stackoverflow.com/questions/33883609/opengl-linker-error-linking-with-uncompiled-shader - Shader ourShader(constants::VERTEX_SHADER_TEXTURE_FILENAME, constants::FRAGMENT_SHADER_TEXTURE_FILENAME); + Shader ourShader( + constants::VERTEX_SHADER_TEXTURE_FILENAME, + constants::FRAGMENT_SHADER_TEXTURE_FILENAME); unsigned int VAO = generateBindVAO(); - unsigned int VBO = copyVerticesMemory(vertices, verticesSize, GL_ARRAY_BUFFER); - unsigned int EBO = copyVerticesMemory(indices, indicesSize, GL_ELEMENT_ARRAY_BUFFER); + unsigned int VBO = copyVerticesMemory( + vertices, + verticesSize, + GL_ARRAY_BUFFER); + unsigned int EBO = copyVerticesMemory(indices, + indicesSize, + GL_ELEMENT_ARRAY_BUFFER); configureVertexAttribute(true, true); unsigned int texture1 = loadAndCreateTexture("assets/container.png", true); - unsigned int texture2 = loadAndCreateTexture("assets/awesomeface.png", false); + unsigned int texture2 = loadAndCreateTexture( + "assets/awesomeface.png", + false); - ourShader.use(); // don't forget to activate/use the shader before setting uniforms! - // either set it manually like so: + ourShader.use(); // don't forget to activate/use + // the shader before setting uniforms! + // set it via the texture class ourShader.setInt("texture1", 0); - // or set it via the texture class ourShader.setInt("texture2", 1); @@ -158,23 +274,33 @@ drawFigureReturn drawDebilMode(const char* vertexPath, const char* fragmentPath, return newReturn; } -void doDrawElements(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const GLenum drawType, const int numberOfElementsToDraw) -{ +void doDrawElements( + const unsigned int shaderProgram, + const unsigned int vertexArrayObject, + const GLenum drawArrayMode, + const GLenum drawType, + const int numberOfElementsToDraw) { glUseProgram(shaderProgram); glBindVertexArray(vertexArrayObject); glDrawElements(drawArrayMode, numberOfElementsToDraw, drawType, 0); glBindVertexArray(0); } -void updateUniformColor(const unsigned int shaderProgram, const GLchar* uniformName) -{ +void updateUniformColor( + const unsigned int shaderProgram, + const GLchar* uniformName) { // update the uniform color - const float timeValue = glfwGetTime(); // retrieve running time - const float greenValue = sin(timeValue) / 2.0f + 0.5f; // vary the color from 0.0 to 1.0 using sin - const int vertexColorLocation = glGetUniformLocation(shaderProgram, uniformName); // query the location of our uniform - if(vertexColorLocation != -1) // if glGetUniformLocation returns -1 it could not find the location - { - glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f); /* we set the uniform value using glUniform4f + const float timeValue = glfwGetTime(); // retrieve running time + const float greenValue = + sin(timeValue) / 2.0f + 0.5f; + // vary the color from 0.0 to 1.0 using sin + // query the location of our uniform + const int vertexColorLocation = + glGetUniformLocation(shaderProgram, uniformName); + // if glGetUniformLocation returns -1 it could not find the location + if (vertexColorLocation != -1) { + glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f); + /* we set the uniform value using glUniform4f 4f means that it expects 4 floats few of possible postfixes: f: the function expects a float as its value. @@ -186,8 +312,12 @@ void updateUniformColor(const unsigned int shaderProgram, const GLchar* uniformN } } -void doDrawArrays(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const int firstIndex, const unsigned int numberOfIndicesToBeRendered) -{ +void doDrawArrays( + const unsigned int shaderProgram, + const unsigned int vertexArrayObject, + const GLenum drawArrayMode, + const int firstIndex, + const unsigned int numberOfIndicesToBeRendered) { // use shader program to render an object glUseProgram(shaderProgram); updateUniformColor(shaderProgram, "ourColor"); @@ -199,4 +329,4 @@ void doDrawArrays(const unsigned int shaderProgram, const unsigned int vertexArr glDrawArrays(drawArrayMode, firstIndex, numberOfIndicesToBeRendered); } -#endif \ No newline at end of file +#endif // #ifndef DRAW_CPP diff --git a/Engine/engine/draw.hpp b/Engine/engine/draw.hpp index 8c2a446..95dc656 100644 --- a/Engine/engine/draw.hpp +++ b/Engine/engine/draw.hpp @@ -1,10 +1,10 @@ // "Copyright [2023] " -#ifndef DRAW_HPP -#define DRAW_HPP +#ifndef ENGINE_ENGINE_DRAW_HPP_ +#define ENGINE_ENGINE_DRAW_HPP_ #include #include #include -#include "constants.hpp" +#include "./constants.hpp" struct offsetsStruct { offsetsStruct(): xOffset(0), yOffset(0), zOffset(0) { } @@ -12,7 +12,7 @@ struct offsetsStruct { }; struct drawFigureReturn { - drawFigureReturn(): success(-1), VAO(0), VBO(0), EBO(0){ } + drawFigureReturn(): success(-1), VAO(0), VBO(0), EBO(0) { } int success; unsigned int VAO; unsigned int VBO; @@ -20,11 +20,51 @@ struct drawFigureReturn { }; drawFigureReturn drawFigure(const int whatToDraw); -drawFigureReturn drawSquare(const float squareVertices[] = constants::SQUARE_VERTICES, const size_t squareVerticesSize = constants::SQUARE_VERTICES_SIZE, const unsigned int squareIndices[] = constants::SQUARE_INDICES, const size_t squareIndicesSize = constants::SQUARE_INDICES_SIZE, const char* vertexShaderSource = constants::VERTEX_SHADER_SOURCE, const char* fragmentShaderSource = constants::FRAGMENT_SHADER_SOURCE, const bool colorIncluded = false, const bool textureIncluded = false, const offsetsStruct offsets = offsetsStruct()); -void doDrawElements(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const GLenum drawType, const int numberOfElementsToDraw); -drawFigureReturn drawTriangleClass(const float triangleVertices[], const size_t triangleVerticesSize, const char* vertexPath, const char* fragmentPath, const bool colorIncluded = false, const bool textureIncluded = false, const offsetsStruct offsets = offsetsStruct()); -void updateUniformColor(const unsigned int shaderProgram, const GLchar* uniformName); -void doDrawArrays(const unsigned int shaderProgram, const unsigned int vertexArrayObject, const GLenum drawArrayMode, const int firstIndex, const unsigned int numberOfIndicesToBeRendered ); -drawFigureReturn drawDebilMode(const char* vertexPath, const char* fragmentPath, const float vertices[], const size_t verticesSize, const unsigned int indices[], const size_t indicesSize); -#endif \ No newline at end of file +drawFigureReturn drawSquare( + const float squareVertices[] = constants::SQUARE_VERTICES, + const size_t squareVerticesSize = constants::SQUARE_VERTICES_SIZE, + const unsigned int squareIndices[] = constants::SQUARE_INDICES, + const size_t squareIndicesSize = constants::SQUARE_INDICES_SIZE, + const char* vertexShaderSource = constants::VERTEX_SHADER_SOURCE, + const char* fragmentShaderSource = constants::FRAGMENT_SHADER_SOURCE, + const bool colorIncluded = false, + const bool textureIncluded = false, + const offsetsStruct offsets = offsetsStruct()); + +void doDrawElements( + const unsigned int shaderProgram, + const unsigned int vertexArrayObject, + const GLenum drawArrayMode, + const GLenum drawType, + const int numberOfElementsToDraw); + +drawFigureReturn drawTriangleClass( + const float triangleVertices[], + const size_t triangleVerticesSize, + const char* vertexPath, + const char* fragmentPath, + const bool colorIncluded = false, + const bool textureIncluded = false, + const offsetsStruct offsets = offsetsStruct()); + +void updateUniformColor( + const unsigned int shaderProgram, + const GLchar* uniformName); + +void doDrawArrays( + const unsigned int shaderProgram, + const unsigned int vertexArrayObject, + const GLenum drawArrayMode, + const int firstIndex, + const unsigned int numberOfIndicesToBeRendered); + +drawFigureReturn drawDebilMode( + const char* vertexPath, + const char* fragmentPath, + const float vertices[], + const size_t verticesSize, + const unsigned int indices[], + const size_t indicesSize); + +#endif // ENGINE_ENGINE_DRAW_HPP_ diff --git a/Engine/engine/match b/Engine/engine/match index ec7896e5d2ac2d9089ab11886ee3e0fd6ffda8d4..9976563e4efaa9a7733421203103c786e1222cc0 100755 GIT binary patch delta 171653 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�sCOu!2dlIacXOc+K~d_}vk~~{5(L9j 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%0Da*tZu?w8&cMzynQRlpiH07p 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 diff --git a/Engine/engine/match.cpp b/Engine/engine/match.cpp index ee6504b..695e1cd 100644 --- a/Engine/engine/match.cpp +++ b/Engine/engine/match.cpp @@ -5,17 +5,18 @@ #include #include -#include // I am using standart library RNG because I am lazy and wanted to create quick code snippet -// upgrade to this: https://arvid.io/2018/06/30/on-cxx-random-number-generator-quality/ whenever, if ever I feel like it -#include // for std::chrono +#include +// I am using standard library RNG because +// I am lazy and wanted to create quick code snippet upgrade to this: +// https://arvid.io/2018/06/30/on-cxx-random-number-generator-quality/ +// whenever, if ever I feel like it -#include "constants.hpp" -#include "beforeRender.hpp" -#include "misc.hpp" -#include "renderLoop.hpp" +#include "./constants.hpp" +#include "./beforeRender.hpp" +#include "./misc.hpp" +#include "./renderLoop.hpp" -int main() -{ +int main() { // changed in glfwWindowShouldClose GLFWwindow *window = prepareForRender(); if (window == nullptr) @@ -27,4 +28,4 @@ int main() return 0; } -#endif \ No newline at end of file +#endif // #ifndef MAIN_CPP diff --git a/Engine/engine/misc.cpp b/Engine/engine/misc.cpp index f070bb7..7d9996e 100644 --- a/Engine/engine/misc.cpp +++ b/Engine/engine/misc.cpp @@ -2,10 +2,9 @@ #ifndef MISC_CPP #define MISC_CPP #include -#include "misc.hpp" -void print(const std::string s) -{ +#include "./misc.hpp" +void print(const std::string s) { std::cout << s << std::endl; } -#endif \ No newline at end of file +#endif diff --git a/Engine/engine/misc.hpp b/Engine/engine/misc.hpp index c13a555..1791104 100644 --- a/Engine/engine/misc.hpp +++ b/Engine/engine/misc.hpp @@ -1,7 +1,8 @@ // "Copyright [2023] " -#ifndef MISC_HPP -#define MISC_HPP +#ifndef ENGINE_ENGINE_MISC_HPP_ +#define ENGINE_ENGINE_MISC_HPP_ #include +#include void print(const std::string s); -#endif \ No newline at end of file +#endif // ENGINE_ENGINE_MISC_HPP_ diff --git a/Engine/engine/renderLoop.cpp b/Engine/engine/renderLoop.cpp index 2fe83eb..1d0174a 100644 --- a/Engine/engine/renderLoop.cpp +++ b/Engine/engine/renderLoop.cpp @@ -4,36 +4,36 @@ #include #include #include -#include "renderLoop.hpp" -#include "draw.hpp" -#include "shaders.hpp" -#include "constants.hpp" -#include "misc.hpp" +#include "./renderLoop.hpp" +#include "./draw.hpp" +#include "./shaders.hpp" +#include "./constants.hpp" +#include "./misc.hpp" -int processInput(GLFWwindow *window, const int whatToDraw) -{ +int processInput(GLFWwindow *window, const int whatToDraw) { static bool lockedLeft = false; static bool lockedRight = false; - const bool PRESSED_CHANGE_LEFT = (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS); - const bool PRESSED_CHANGE_RIGHT = (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS); + const bool PRESSED_CHANGE_LEFT = + (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS); + const bool PRESSED_CHANGE_RIGHT = + (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS); - // glfwGetKey takes window and key as an input and checks is currently being pressed + // glfwGetKey takes window and key as + // an input and checks is currently being pressed // if the user pressed escape we close window if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); if (glfwGetKey(window, GLFW_KEY_C) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); - if ( !PRESSED_CHANGE_LEFT ) + if ( !PRESSED_CHANGE_LEFT ) lockedLeft = 0; - if ( !PRESSED_CHANGE_RIGHT ) + if ( !PRESSED_CHANGE_RIGHT ) lockedRight = 0; - if ( PRESSED_CHANGE_RIGHT && lockedRight == 0 ) - { + if ( PRESSED_CHANGE_RIGHT && lockedRight == 0 ) { lockedRight = 1; return (whatToDraw == constants::MAX_DRAW_CALL ? 0 : whatToDraw + 1); } - if ( PRESSED_CHANGE_LEFT && lockedLeft == 0 ) - { + if ( PRESSED_CHANGE_LEFT && lockedLeft == 0 ) { lockedLeft = 1; return (whatToDraw == 0 ? constants::MAX_DRAW_CALL : whatToDraw - 1); } @@ -41,15 +41,19 @@ int processInput(GLFWwindow *window, const int whatToDraw) } // https://stackoverflow.com/a/25680092 -unsigned int copyVerticesMemory(const float vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget) -{ +unsigned int copyVerticesMemory( + const float vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget) { // stores vertices in gpu memory unsigned int vertexBufferObject; - // this is open gl object so we refer it by its ID generated here and stored in vertexBufferObject variable + // this is open gl object so we refer + // it by its ID generated here and stored in vertexBufferObject variable glGenBuffers(1, &vertexBufferObject); // buffer type of vertex buffer object is GL_ARRAY_BUFFER glBindBuffer(boundBufferTarget, vertexBufferObject); - // now whenever we change GL_ARRAY_BUFFER we change bound buffer vertexBufferObject + // now whenever we change GL_ARRAY_BUFFER + // we change bound buffer vertexBufferObject /* we copy vertex data into buffer memory GL_STREAM_DRAW: the data is set only once and used by the GPU at most a few times. @@ -60,15 +64,21 @@ unsigned int copyVerticesMemory(const float vertices[], const size_t sizeOfVerti return vertexBufferObject; } -unsigned int copyVerticesMemory(const unsigned int vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget) -{ +unsigned int copyVerticesMemory( + const unsigned int vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget) { // stores vertices in gpu memory unsigned int vertexBufferObject; - // this is open gl object so we refer it by its ID generated here and stored in vertexBufferObject variable + // this is open gl object so we refer it + // by its ID generated here and stored in vertexBufferObject variable glGenBuffers(1, &vertexBufferObject); // buffer type of vertex buffer object is GL_ARRAY_BUFFER - glBindBuffer(boundBufferTarget, vertexBufferObject); - // now whenever we change GL_ARRAY_BUFFER we change bound buffer vertexBufferObject + glBindBuffer( + boundBufferTarget, + vertexBufferObject); + // now whenever we change GL_ARRAY_BUFFER + // we change bound buffer vertexBufferObject /* we copy vertex data into buffer memory GL_STREAM_DRAW: the data is set only once and used by the GPU at most a few times. @@ -79,8 +89,9 @@ unsigned int copyVerticesMemory(const unsigned int vertices[], const size_t size return vertexBufferObject; } -void configureVertexAttribute(const bool colorIncluded, const bool textureIncluded) -{ +void configureVertexAttribute( + const bool colorIncluded, + const bool textureIncluded) { /* specify how OGL interprets vertex data From left: which vertex attribute we configure (from shader source code layout (location = 0)) @@ -91,8 +102,10 @@ void configureVertexAttribute(const bool colorIncluded, const bool textureInclud offset of where position data begins in buffer see: https://learnopengl.com/img/getting-started/vertex_attribute_pointer.png vertex attribute data take data from memory managed by VBO bound to GL_ARRAY_BUFFER */ - if(!colorIncluded) { - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0); + if (!colorIncluded) { + glVertexAttribPointer( + 0, 3, GL_FLOAT, GL_FALSE, + 3 * sizeof(float), reinterpret_cast(0)); // enable vertex attribute glEnableVertexAttribArray(0); return; @@ -103,37 +116,47 @@ void configureVertexAttribute(const bool colorIncluded, const bool textureInclud /* we change attribute location, color values have size of 3 floats we do not normalize values, in order to get the next attribute value in data array we need to move 6 floats, (3 for position and 3 for color), we also need to specify an offset, first we have position then after 3 floats we have color https://learnopengl.com/img/getting-started/vertex_attribute_pointer_interleaved.png */ - - if(colorIncluded && !textureIncluded) { - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void *)0); + if (colorIncluded && !textureIncluded) { + glVertexAttribPointer( + 0, 3, GL_FLOAT, GL_FALSE, + 6 * sizeof(float), reinterpret_cast(0)); // enable vertex attribute glEnableVertexAttribArray(0); - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void *)(3* sizeof(float))); + glVertexAttribPointer( + 1, 3, GL_FLOAT, GL_FALSE, + 6 * sizeof(float), reinterpret_cast(3* sizeof(float))); // enable vertex attribute glEnableVertexAttribArray(1); return; } - // Since we've added an extra vertex attribute we again have to notify OpenGL of the new vertex format - // this time for textures we add just 2 more attributes and not 3 as with color - if(textureIncluded) { - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void *)0); + // Since we've added an extra vertex + // attribute we again have to notify OpenGL of the new vertex format + // this time for textures we add just + // 2 more attributes and not 3 as with color + if (textureIncluded) { + glVertexAttribPointer( + 0, 3, GL_FLOAT, GL_FALSE, + 8 * sizeof(float), reinterpret_cast(0)); // enable vertex attribute glEnableVertexAttribArray(0); - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void *)(3* sizeof(float))); + glVertexAttribPointer( + 1, 3, GL_FLOAT, GL_FALSE, + 8 * sizeof(float), reinterpret_cast(3* sizeof(float))); // enable vertex attribute glEnableVertexAttribArray(1); - glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); - glEnableVertexAttribArray(2); - return; + glVertexAttribPointer( + 2, 2, GL_FLOAT, GL_FALSE, + 8 * sizeof(float), reinterpret_cast(6 * sizeof(float))); + glEnableVertexAttribArray(2); + return; } } -unsigned int generateBindVAO() -{ +unsigned int generateBindVAO() { // vertex array object is used to draw objects by binding them to vao // generate vao unsigned int vertexArrayObject; @@ -143,40 +166,50 @@ unsigned int generateBindVAO() return vertexArrayObject; } -void copyVerticesArray(const unsigned int vertexBufferObject, const float vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget) -{ +void copyVerticesArray( + const unsigned int vertexBufferObject, + const float vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget) { // copy vertices array in array useful for OGL glBindBuffer(boundBufferTarget, vertexBufferObject); glBufferData(boundBufferTarget, sizeOfVertices, vertices, GL_STATIC_DRAW); } -int renderLoopInside(GLFWwindow *window, int whatToDraw) -{ +int renderLoopInside(GLFWwindow *window, int whatToDraw) { // input whatToDraw = processInput(window, whatToDraw); // We specify the color to clear the screen with // RGB and alpha value - glClearColor(constants::LEARN_OPEN_GL_COLOR.red, constants::LEARN_OPEN_GL_COLOR.green, constants::LEARN_OPEN_GL_COLOR.blue, constants::LEARN_OPEN_GL_COLOR.alpha); - // There is GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT and GL_STENCIL_BUFFER_BIT + glClearColor( + constants::LEARN_OPEN_GL_COLOR.red, + constants::LEARN_OPEN_GL_COLOR.green, + constants::LEARN_OPEN_GL_COLOR.blue, + constants::LEARN_OPEN_GL_COLOR.alpha); + // There is + // GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT and GL_STENCIL_BUFFER_BIT glClear(GL_COLOR_BUFFER_BIT); drawFigureReturn successAndVao = drawFigure(whatToDraw); - if (successAndVao.success == -1) - { + if (successAndVao.success == -1) { print("error with drawing!"); glfwSetWindowShouldClose(window, true); - }; + } // swaps buffer containing color values of each pixel in window - // there is front buffer (final image) and back buffer (where all rendering commands draw to) - // when back buffer is ready we swap it with front buffer to eliminate flickering + // there is front buffer (final image) + // and back buffer (where all rendering commands draw to) + // when back buffer is ready we swap it + // with front buffer to eliminate flickering glfwSwapBuffers(window); - // glfwPollEvents checks if any event (like mouse/keyboard input was triggered), updates window state and calls functions (which we register via callback methods) + // glfwPollEvents checks if any event + // (like mouse/keyboard input was triggered), + // updates window state and calls functions + // (which we register via callback methods) glfwPollEvents(); - // std::cout << "successAndVao.VAO" << successAndVao.VAO << "successAndVao.VBO" << successAndVao.VBO << "successAndVao.EBO" << successAndVao.EBO << std::endl; glDeleteVertexArrays(1, &successAndVao.VAO); glDeleteBuffers(1, &successAndVao.VBO); glDeleteBuffers(1, &successAndVao.EBO); @@ -185,14 +218,12 @@ int renderLoopInside(GLFWwindow *window, int whatToDraw) return whatToDraw; } -void renderLoop(GLFWwindow *window) -{ +void renderLoop(GLFWwindow *window) { int whatToDraw = 0; // glfwWindowShouldClose checks if GLFW was instructed to close - while (!glfwWindowShouldClose(window)) - { + while (!glfwWindowShouldClose(window)) { whatToDraw = renderLoopInside(window, whatToDraw); } } -#endif \ No newline at end of file +#endif diff --git a/Engine/engine/renderLoop.hpp b/Engine/engine/renderLoop.hpp index 24b79f9..ee5adab 100644 --- a/Engine/engine/renderLoop.hpp +++ b/Engine/engine/renderLoop.hpp @@ -1,17 +1,34 @@ // "Copyright [2023] " -#ifndef RENDER_LOOP_HPP -#define RENDER_LOOP_HPP +#ifndef ENGINE_ENGINE_RENDERLOOP_HPP_ +#define ENGINE_ENGINE_RENDERLOOP_HPP_ #include #include void renderLoop(GLFWwindow *window); int renderLoopInside(GLFWwindow *window, int whatToDraw); -void copyVerticesArray(unsigned int vertexBufferObject, const float vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget); + +void copyVerticesArray( + unsigned int vertexBufferObject, + const float vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget); + unsigned int generateBindVAO(); -void configureVertexAttribute(const bool colorIncluded, const bool textureIncluded); + +void configureVertexAttribute( + const bool colorIncluded, + const bool textureIncluded); + int processInput(GLFWwindow *window, int whatToDraw); -unsigned int copyVerticesMemory(const float vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget); -unsigned int copyVerticesMemory(const unsigned int vertices[], const size_t sizeOfVertices, const GLenum boundBufferTarget); +unsigned int copyVerticesMemory( + const float vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget); -#endif \ No newline at end of file +unsigned int copyVerticesMemory( + const unsigned int vertices[], + const size_t sizeOfVertices, + const GLenum boundBufferTarget); + +#endif // ENGINE_ENGINE_RENDERLOOP_HPP_ diff --git a/Engine/engine/shader.cpp b/Engine/engine/shader.cpp index 7de431b..7fd9f87 100644 --- a/Engine/engine/shader.cpp +++ b/Engine/engine/shader.cpp @@ -8,17 +8,15 @@ #include #include #include -#include "shader.hpp" +#include "./shader.hpp" -const std::string Shader::fileToShader(const std::string shaderPath) -{ +const std::string Shader::fileToShader(const std::string shaderPath) { // 1. retrieve the vertex/fragment source code from filePath std::string shaderCode; std::ifstream shaderFile; // ensure ifstream objects can throw exceptions: - shaderFile.exceptions (std::ifstream::failbit | std::ifstream::badbit); - try - { + shaderFile.exceptions(std::ifstream::failbit | std::ifstream::badbit); + try { // open files shaderFile.open(shaderPath); std::stringstream shaderStream; @@ -29,17 +27,20 @@ const std::string Shader::fileToShader(const std::string shaderPath) // convert stream into string shaderCode = shaderStream.str(); } - catch (std::ifstream::failure& e) - { - std::cout << "ERROR::SHADER::FILE_NOT_SUCCESFULLY_READ: " << e.what() << std::endl; + catch (std::ifstream::failure& e) { + std::cout << + "ERROR::SHADER::FILE_NOT_SUCCESSFULLY_READ: " + << e.what() << std::endl; } return shaderCode; } -Shader::Shader(const std::string vertexPath, const std::string fragmentPath) -{ +Shader::Shader(const std::string vertexPath, const std::string fragmentPath) { const std::string vshaderCodeString = this -> fileToShader(vertexPath); - const std::string fShaderCodeString = this -> fileToShader(fragmentPath); + + const std::string fShaderCodeString = + this -> fileToShader(fragmentPath); + const char* vShaderCode = vshaderCodeString.c_str(); const char * fShaderCode = fShaderCodeString.c_str(); // 2. compile shaders @@ -60,53 +61,54 @@ Shader::Shader(const std::string vertexPath, const std::string fragmentPath) glAttachShader(ID, fragment); glLinkProgram(ID); checkCompileErrors(ID, "PROGRAM"); - // delete the shaders as they're linked into our program now and no longer necessary + // delete the shaders as they're linked + // into our program now and no longer necessary glDeleteShader(vertex); glDeleteShader(fragment); } -void Shader::use() -{ - glUseProgram(ID); +void Shader::use() { + glUseProgram(ID); } -void Shader::setBool(const std::string &name, bool value) const -{ - glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value); +void Shader::setBool(const std::string &name, bool value) const { + glUniform1i( + glGetUniformLocation(ID, name.c_str()), + reinterpret_cast(value)); } -void Shader::setInt(const std::string &name, int value) const -{ - glUniform1i(glGetUniformLocation(ID, name.c_str()), value); +void Shader::setInt(const std::string &name, int value) const { + glUniform1i(glGetUniformLocation(ID, name.c_str()), value); } -void Shader::setFloat(const std::string &name, float value) const -{ - glUniform1f(glGetUniformLocation(ID, name.c_str()), value); +void Shader::setFloat(const std::string &name, float value) const { + glUniform1f(glGetUniformLocation(ID, name.c_str()), value); } -void Shader::checkCompileErrors(unsigned int shader, std::string type) -{ +void Shader::checkCompileErrors(unsigned int shader, std::string type) { int success; char infoLog[1024]; - if (type != "PROGRAM") - { + if (type != "PROGRAM") { glGetShaderiv(shader, GL_COMPILE_STATUS, &success); - if (!success) - { + if (!success) { glGetShaderInfoLog(shader, 1024, NULL, infoLog); - std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; + std::cout << + "ERROR::SHADER_COMPILATION_ERROR of type: " + << type << "\n" << infoLog << + "\n -- --------------------------------------------------- -- " + << std::endl; } - } - else - { + } else { glGetProgramiv(shader, GL_LINK_STATUS, &success); - if (!success) - { + if (!success) { glGetProgramInfoLog(shader, 1024, NULL, infoLog); - std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; + std::cout << + "ERROR::PROGRAM_LINKING_ERROR of type: " + << type << "\n" << infoLog << + "\n -- --------------------------------------------------- -- " + << std::endl; } } } -#endif // SHADER_CPP \ No newline at end of file +#endif // SHADER_CPP \ No newline at end of file diff --git a/Engine/engine/shader.hpp b/Engine/engine/shader.hpp index 155e245..122315d 100644 --- a/Engine/engine/shader.hpp +++ b/Engine/engine/shader.hpp @@ -1,6 +1,6 @@ // "Copyright [2023] " -#ifndef SHADER_HPP -#define SHADER_HPP +#ifndef ENGINE_ENGINE_SHADER_HPP_ +#define ENGINE_ENGINE_SHADER_HPP_ #include @@ -9,9 +9,8 @@ #include #include -class Shader -{ -public: +class Shader { + public: unsigned int ID; // constructor generates the shader on the fly // ------------------------------------------------------------------------ @@ -28,10 +27,15 @@ public: // ------------------------------------------------------------------------ void setFloat(const std::string &name, float value) const; -private: + private: // utility function for checking shader compilation/linking errors. // ------------------------------------------------------------------------ void checkCompileErrors(unsigned int shader, std::string type); - void compileErrorsMessage(const unsigned int shader, const bool compilation, const std::string type, const std::string errorMessage); + + void compileErrorsMessage( + const unsigned int shader, + const bool compilation, + const std::string type, + const std::string errorMessage); }; -#endif +#endif // ENGINE_ENGINE_SHADER_HPP_ diff --git a/Engine/engine/shaders.cpp b/Engine/engine/shaders.cpp index 6780e40..23a2af5 100644 --- a/Engine/engine/shaders.cpp +++ b/Engine/engine/shaders.cpp @@ -3,12 +3,13 @@ #define SHADERS_CPP #include #include -#include "shaders.hpp" -#include "constants.hpp" -#include "misc.hpp" +#include "./shaders.hpp" +#include "./constants.hpp" +#include "./misc.hpp" -unsigned int linkShaderObjectsShaderProgram(const unsigned int vertexShaders, const unsigned int fragmentShader) -{ +unsigned int linkShaderObjectsShaderProgram( + const unsigned int vertexShaders, + const unsigned int fragmentShader) { // link shader objects into shader program // will store shader program id // creates program @@ -27,7 +28,8 @@ unsigned int linkShaderObjectsShaderProgram(const unsigned int vertexShaders, co // after that every shader and rendering call will use this program object glUseProgram(shaderProgram); - // delete shaders (they are linked into shaderProgram and we do not need them anymore) + // delete shaders + // (they are linked into shaderProgram and we do not need them anymore) glDeleteShader(vertexShaders); glDeleteShader(fragmentShader); if (shaderProgram == 0) @@ -35,13 +37,16 @@ unsigned int linkShaderObjectsShaderProgram(const unsigned int vertexShaders, co return shaderProgram; } -unsigned int compileShader(const GLenum shaderType, const char *shaderSource) -{ +unsigned int compileShader( + const GLenum shaderType, + const char *shaderSource) { // we create vertex shader and assign its id to shader variable const unsigned int shaderID = glCreateShader(shaderType); // attach shader source code to shader object - // from left: shader object to compile, how many strings as source code, actual source code (we leave the 4th as nullptr) + // from left: shader object to compile, + // how many strings as source code, actual source code + // (we leave the 4th as nullptr) glShaderSource(shaderID, 1, &shaderSource, nullptr); // compile shader glCompileShader(shaderID); @@ -50,26 +55,28 @@ unsigned int compileShader(const GLenum shaderType, const char *shaderSource) return shaderID; } -std::pair compileShaders(const char* vertexShaderSource, const char* fragmentShaderSource) -{ - const unsigned int vertexShader = compileShader(GL_VERTEX_SHADER, vertexShaderSource); - if (vertexShader == 0) - { +std::pair compileShaders( + const char* vertexShaderSource, + const char* fragmentShaderSource) { + const unsigned int vertexShader = + compileShader(GL_VERTEX_SHADER, vertexShaderSource); + + if (vertexShader == 0) { print("Vertex Shader Compilation Failed"); return std::make_pair(0, 0); } - const unsigned int fragmentShader = compileShader(GL_FRAGMENT_SHADER, fragmentShaderSource); - if (fragmentShader == 0) - { + const unsigned int fragmentShader = + compileShader(GL_FRAGMENT_SHADER, fragmentShaderSource); + + if (fragmentShader == 0) { print("Fragment Shader Compilation Failed"); return std::make_pair(0, 0); } return std::make_pair(vertexShader, fragmentShader); } -void shaderFailedMessage(const unsigned int shader, const bool compilation) -{ +void shaderFailedMessage(const unsigned int shader, const bool compilation) { char infoLog[512]; const size_t sizeOfInfoLog = sizeof(infoLog) / sizeof(infoLog[0]); compilation ? glGetShaderInfoLog(shader, sizeOfInfoLog, nullptr, infoLog) @@ -78,8 +85,7 @@ void shaderFailedMessage(const unsigned int shader, const bool compilation) << infoLog << std::endl; } -int shaderSuccessful(const unsigned int shader, const bool compilation) -{ +int shaderSuccessful(const unsigned int shader, const bool compilation) { // check if compilation was successful // int because glGetShaderiv requires int int success; @@ -88,11 +94,10 @@ int shaderSuccessful(const unsigned int shader, const bool compilation) compilation ? glGetShaderiv(shader, GL_COMPILE_STATUS, &success) : glGetProgramiv(shader, GL_LINK_STATUS, &success); // if not display compilation log - if (!success) - { + if (!success) { shaderFailedMessage(shader, compilation); } return success; } -#endif \ No newline at end of file +#endif diff --git a/Engine/engine/shaders.hpp b/Engine/engine/shaders.hpp index a783486..3a95690 100644 --- a/Engine/engine/shaders.hpp +++ b/Engine/engine/shaders.hpp @@ -1,16 +1,23 @@ // "Copyright [2023] " -#ifndef SHADERS_HPP -#define SHADERS_HPP +#ifndef ENGINE_ENGINE_SHADERS_HPP_ +#define ENGINE_ENGINE_SHADERS_HPP_ #include #include #include +#include + +unsigned int linkShaderObjectsShaderProgram( + const unsigned int vertexShaders, + const unsigned int fragmentShader); + +std::pair compileShaders( + const char* vertexShaderSource, + const char* fragmentShaderSource); -unsigned int linkShaderObjectsShaderProgram(const unsigned int vertexShaders, const unsigned int fragmentShader); -std::pair compileShaders(const char* vertexShaderSource, const char* fragmentShaderSource); unsigned int compileShader(const GLenum shaderType, const char *shaderSource); int shaderCompilationSuccessful(const unsigned int shader); int shaderProgramLinkingSuccessful(const unsigned int shaderProgram); int shaderSuccessful(const unsigned int shader, const bool compilation); void shaderFailedMessage(const unsigned int shader, const bool compilation); -#endif \ No newline at end of file +#endif // ENGINE_ENGINE_SHADERS_HPP_