From c9f3951afbc1d534b965db93273e26892ab7d0a7 Mon Sep 17 00:00:00 2001 From: Ben Date: Sun, 13 Jan 2019 21:50:28 +0000 Subject: [PATCH] texture loading --- OpenGL/cube/cube.a | Bin 56104 -> 56288 bytes OpenGL/cube/resources/shaders/simple.frag | 13 +++++ OpenGL/cube/resources/shaders/simple.vert | 15 ++++++ OpenGL/cube/resources/textures/dirtside.jpg | Bin 0 -> 9271 bytes OpenGL/cube/src/main.cpp | 56 +++++++++++++++----- 5 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 OpenGL/cube/resources/shaders/simple.frag create mode 100644 OpenGL/cube/resources/shaders/simple.vert create mode 100644 OpenGL/cube/resources/textures/dirtside.jpg diff --git a/OpenGL/cube/cube.a b/OpenGL/cube/cube.a index 909e86bca92fcf2c287b1c5fc7e3e1e01b05f167..95eb3ce5b0bf4a27d10227fd38a2359188303012 100755 GIT binary patch delta 15535 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 literal 0 HcmV?d00001 diff --git a/OpenGL/cube/src/main.cpp b/OpenGL/cube/src/main.cpp index 72f7cc9..3fae8a2 100644 --- a/OpenGL/cube/src/main.cpp +++ b/OpenGL/cube/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -44,7 +45,7 @@ int main(int argc, char** argv) { game->window = SDL_CreateWindow("GL CUBE", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, - 400, 400, + 1000, 1000, SDL_WINDOW_OPENGL); game->glContext = SDL_GL_CreateContext(game->window); @@ -66,12 +67,20 @@ int main(int argc, char** argv) { // Set GL clear colour (light blue) glClearColor(0.1f, 0.45f, 0.9f, 1.0f); - // GL Screen coordinates of a 2D triangle followed by the colour - GLint numOfVerticies = 15; + // GL Screen coordinates of a 2D triangle followed by the colour and the texture coordinates + GLint numOfVerticies = 28; float vertices[] = { - 0.0f, 0.5f, 1.0f, 0.0f, 0.0f, // Vertex 1: (X, Y, R, G, B) - 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, // Vertex 2: (X, Y, R, G, B) - -0.5f, -0.5f, 0.0f, 0.0f, 1.0f // Vertex 3: (X, Y, R, G, B) + // Positions Colour Texture + -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Top-left + 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Top-right + 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, // Bottom-right + -0.5f, -0.5f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, // Bottom-left + }; + + // Element array - order of verticies drawn + GLuint elements[] = { + 0, 1, 2, + 2, 3, 0 }; // Generate a vertex array object @@ -83,24 +92,48 @@ int main(int argc, char** argv) { // Generate a vertex buffer object GLuint vbo; glGenBuffers(1, &vbo); - // Binding buffer to GPU + // Bind buffer to the GPU glBindBuffer(GL_ARRAY_BUFFER, vbo); // Copy vertex data to the vertex buffer already on the GPU glBufferData(GL_ARRAY_BUFFER, sizeof(vertices[0]) * numOfVerticies, vertices, GL_STATIC_DRAW); + // Generate another vertex buffer for the element array buffer + GLuint ebo; + glGenBuffers(1, &ebo); + // Bind buffer to the GPU + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + // Copy buffer data to the buffer already on the GPU + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW); + // Load, compile, apply and link shader programs Shader simpleShader; - simpleShader.load("./shaders/simple").attatch().link().use(); + simpleShader.load("./resources/shaders/simple").attatch().link().use(); + + // Load texture from file + SDL_Surface* sur = IMG_Load("./resources/textures/dirtside.jpg"); + // Set up a GL texture + GLuint tex; + glBindTexture(GL_TEXTURE_2D, tex); + // it won't work without this idk why yet + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + // Passes SDL texture into the texture buffer for GL to use in shaders + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, sur->w, sur->h, 0, GL_RGB, GL_UNSIGNED_BYTE, sur->pixels); GLint posAttrib = glGetAttribLocation(simpleShader.getProgram(), "position"); glEnableVertexAttribArray(posAttrib); glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, - 5*sizeof(float), 0); + 7*sizeof(float), 0); GLint colAttrib = glGetAttribLocation(simpleShader.getProgram(), "colour"); glEnableVertexAttribArray(colAttrib); glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, - 5*sizeof(float), (void*)(2*sizeof(float))); + 7*sizeof(float), (void*)(2*sizeof(float))); + + GLint texAttrib = glGetAttribLocation(simpleShader.getProgram(), "texcoord"); + glEnableVertexAttribArray(texAttrib); + glVertexAttribPointer(texAttrib, 2, GL_FLOAT, GL_FALSE, + 7*sizeof(float), (void*)(5*sizeof(float))); GLint triangleUniColour = glGetUniformLocation(simpleShader.getProgram(), "triangleColour"); glUniform3f(triangleUniColour, 0.2f, 0.8f, 0.3f); @@ -115,13 +148,12 @@ int main(int argc, char** argv) { // Clear the screen glClear(GL_COLOR_BUFFER_BIT); // Draw a triangle from the 3 vertices - glDrawArrays(GL_TRIANGLES, 0, 3); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); // Swap buffers SDL_GL_SwapWindow(game->window); } game->isWindowClosed = true; - simpleShader.~Shader(); SDL_GL_DeleteContext(game->glContext); SDL_DestroyWindow(game->window); SDL_Quit();