diff --git a/Engine/engine/constants.hpp b/Engine/engine/constants.hpp index b50529e..8174291 100644 --- a/Engine/engine/constants.hpp +++ b/Engine/engine/constants.hpp @@ -106,7 +106,7 @@ namespace constants }; inline const char* FRAGMENT_SHADER_TEXTURE_FILENAME { - ".Shaders/fragmentShaderTexture.fs" + "./Shaders/fragmentShaderTexture.fs" }; // we specify three vertices diff --git a/Engine/engine/draw.cpp b/Engine/engine/draw.cpp index 3a8adb0..6311a31 100644 --- a/Engine/engine/draw.cpp +++ b/Engine/engine/draw.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "draw.hpp" #include "renderLoop.hpp" #include "shaders.hpp" @@ -11,6 +12,7 @@ #include "misc.hpp" #include "shader.hpp" #include "textures.hpp" +#include "stb_image.h" int drawFigure(const int whatToDraw) { @@ -145,6 +147,87 @@ int drawSquareClass(const char* vertexPath, const char* fragmentPath, const bool int drawDebilMode() { // https://stackoverflow.com/questions/33883609/opengl-linker-error-linking-with-uncompiled-shader Shader ourShader(constants::VERTEX_SHADER_TEXTURE_FILENAME, constants::FRAGMENT_SHADER_TEXTURE_FILENAME); + + float 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 + }; + unsigned int indices[] = { + 0, 1, 3, // first triangle + 1, 2, 3 // second triangle + }; + + unsigned int VBO, VAO, EBO; + glGenVertexArrays(1, &VAO); + glGenBuffers(1, &VBO); + glGenBuffers(1, &EBO); + + glBindVertexArray(VAO); + + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW); + + // position attribute + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0); + glEnableVertexAttribArray(0); + // color attribute + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(3 * sizeof(float))); + glEnableVertexAttribArray(1); + // texture coord attribute + glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float))); + glEnableVertexAttribArray(2); + + // load and create a texture + // ------------------------- + unsigned int texture1, texture2; + // texture 1 + // --------- + glGenTextures(1, &texture1); + glBindTexture(GL_TEXTURE_2D, texture1); + // set the texture wrapping parameters + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + // set texture filtering parameters + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // load image, create texture and generate mipmaps + int width = 430, height = 288, nrChannels; + stbi_set_flip_vertically_on_load(true); // tell stb_image.h to flip loaded texture's on the y-axis. + // The FileSystem::getPath(...) is part of the GitHub repository so we can find files on any IDE/platform; replace it with your own image path. + unsigned char *data = stbi_load("assets/Preview.png", &width, &height, &nrChannels, 0); + if (data) + { + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); + glGenerateMipmap(GL_TEXTURE_2D); + } + else + { + stbi_image_free(data); + std::cout << "Failed to load texture" << std::endl; + } + stbi_image_free(data); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, texture1); + ourShader.use(); // don't forget to activate/use the shader before setting uniforms! + // or set it via the texture class + ourShader.setInt("texture1", 1); + glBindVertexArray(VAO); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + + glDeleteVertexArrays(1, &VAO); + glDeleteBuffers(1, &VBO); + glDeleteBuffers(1, &EBO); + + + + return 0; } diff --git a/Engine/engine/match b/Engine/engine/match index fb587a1..7ff4d28 100755 Binary files a/Engine/engine/match and b/Engine/engine/match differ diff --git a/Engine/engine/renderLoop.cpp b/Engine/engine/renderLoop.cpp index a713108..7428ee2 100644 --- a/Engine/engine/renderLoop.cpp +++ b/Engine/engine/renderLoop.cpp @@ -159,6 +159,8 @@ int renderLoopInside(GLFWwindow *window, int whatToDraw) // There is GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT and GL_STENCIL_BUFFER_BIT glClear(GL_COLOR_BUFFER_BIT); + + if (drawFigure(whatToDraw) == -1) { print("error with drawing!");