diff --git a/.gitignore b/.gitignore index 6197c51..0beb3e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ build/test -build/main \ No newline at end of file diff --git a/README.MD b/README.MD index c71dc7b..787ef18 100644 --- a/README.MD +++ b/README.MD @@ -2,12 +2,3 @@ # the VEry LArge Game Engine it's a game engine for big s#1t - - -# building - -it's easy just type `make` to build and run ./build/main - -or run `make Test` to build the test - -"easy" he said. instant regret. \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000..d0b1c3e Binary files /dev/null and b/a.out differ diff --git a/build/main b/build/main index c56ea6f..5d8ada1 100755 Binary files a/build/main and b/build/main differ diff --git a/build/test b/build/test index 51688c1..d82b8e4 100755 Binary files a/build/test and b/build/test differ diff --git a/engine/object.cpp b/engine/object.cpp deleted file mode 100644 index 306eaa3..0000000 --- a/engine/object.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "object.hpp" -#include "shader.hpp" - -void gameobject::render() { - glDrawElements(GL_TRIANGLES, element_number, GL_UNSIGNED_INT, elements); -} - -gameobject::gameobject(shader *render_shader) { - rend_shader = render_shader; - - glGenVertexArrays(1, &vao); -} - -void gameobject::genEbo() { - glGenBuffers(1, &ebo); // Generate 1 buffer - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); - - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint)*element_number, elements, - GL_STATIC_DRAW); -} - -void gameobject::genVbo(GLfloat vertices[], GLuint size) { - glGenBuffers(1, &vbo); // Generate 1 buffer - - glBindBuffer(GL_ARRAY_BUFFER, vbo); - - glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * size, vertices, GL_STATIC_DRAW); -} \ No newline at end of file diff --git a/engine/object.hpp b/engine/object.hpp deleted file mode 100644 index c5edd61..0000000 --- a/engine/object.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __GAMEOBJECT_H__ -#define __GAMEOBJECT_H__ - -#include -#include -#include -#include -#include "shader.hpp" - -/* - * absolute bare minimum to get rendering to - * sorta hacky work - */ -class gameobject{ -public: - shader *rend_shader; - - GLuint vbo; - GLuint vao; - - GLuint element_number; - GLuint ebo; - GLuint *elements; - - void render(); - - void genVbo(GLfloat vertices[], GLuint size); - void genEbo(); - - gameobject(shader *render_shader); -private: -}; - -#endif \ No newline at end of file diff --git a/engine/rendering.cpp b/engine/rendering.cpp index 9661270..b1a6157 100644 --- a/engine/rendering.cpp +++ b/engine/rendering.cpp @@ -39,7 +39,7 @@ bool rendering::Shaderinit() { // --get paths-- for (int i = 0; i < manifest["vertex"].size(); i++) { - shaderpaths_vertex.push_back(manifest["vertex"][i]["path"].asString()); + shaderpaths_vertex.push_back(manifest["vertex"][0].asString()); } std::vector shadercode_vertex; @@ -88,7 +88,7 @@ bool rendering::Shaderinit() { // --get paths-- for (int i = 0; i < manifest["fragment"].size(); i++) { - shaderpaths_fragment.push_back(manifest["fragment"][i]["path"].asString()); + shaderpaths_fragment.push_back(manifest["fragment"][0].asString()); } std::vector shadercode_fragment; @@ -144,34 +144,14 @@ bool rendering::Shaderinit() { } // fragment if (manifest["combos"][i]["fragment"].isInt()) { - shader.fragmentShader = - fragment_shaders.at(manifest["combos"][i]["fragment"].asInt()); + shader.vertexShader = + vertex_shaders.at(manifest["combos"][i]["fragment"].asInt()); } else { std::cerr - << "required argument \"fragment\" is nonexistant or not an int\n"; + << "required argument \"fragment\" is nonexistant or not an int"; return false; } - - if(!manifest["fragment"][manifest["combos"][i]["fragment"].asInt()]["framebuff_output"].isArray()){ - std::cerr<<"vertex["<shaders.push_back(shader); } return true; } - -void rendering::render(){ - for (int i=0; i #include #include "shader.hpp" -#include "object.hpp" //contains the context for the window and stuff for setting up the renderer to render stuff @@ -32,10 +31,6 @@ public: std::vector vertex_shaders; std::vector fragment_shaders; std::vector shaders; - std::vector objects; - - //temporary - void render(); private: SDL_Window *window; diff --git a/engine/shader.cpp b/engine/shader.cpp index c245020..0829a31 100644 --- a/engine/shader.cpp +++ b/engine/shader.cpp @@ -1,19 +1,8 @@ #include "shader.hpp" -void shader::linkshader() { glLinkProgram(shaderProgram); } - -void shader::attatchshader() { - shaderProgram = glCreateProgram(); - glAttachShader(shaderProgram, vertexShader); - glAttachShader(shaderProgram, fragmentShader); -} - -void shader::use() { glUseProgram(shaderProgram); } - -GLint shader::getInputId(std::string name) { - return glGetProgramResourceIndex(shaderProgram, GL_PROGRAM_INPUT, name.c_str()); -} - -GLint shader::getOutputId(std::string name) { - return glGetProgramResourceIndex(shaderProgram, GL_PROGRAM_OUTPUT, name.c_str()); +void shader::linkshader(){ + shaderProgram = glCreateProgram(); + glAttachShader(shaderProgram, vertexShader); + glAttachShader(shaderProgram, fragmentShader); + glLinkProgram(shaderProgram); } \ No newline at end of file diff --git a/engine/shader.hpp b/engine/shader.hpp index b79e37f..46c2d6f 100644 --- a/engine/shader.hpp +++ b/engine/shader.hpp @@ -5,7 +5,6 @@ #include #include #include -#include class shader{ public: @@ -13,13 +12,7 @@ class shader{ GLuint vertexShader; GLuint shaderProgram; //links the shader and creates the shaderprogram - GLint getInputId(std::string name); - GLint getOutputId(std::string name); - //void setAttribute(std::string name); - void setAttribute(GLuint name); - void attatchshader(); void linkshader(); - void use(); private: }; diff --git a/main.cpp b/main.cpp index 2ab0c05..4fc5434 100644 --- a/main.cpp +++ b/main.cpp @@ -71,25 +71,6 @@ int main(int argc, char *argv[]) }; - //shaders - - GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(vertexShader, 1, &vertcode, NULL); - glCompileShader(vertexShader); - - GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(fragmentShader, 1, &fragcode, NULL); - glCompileShader(fragmentShader); - - - GLuint shaderProgram = glCreateProgram(); - glAttachShader(shaderProgram, vertexShader); - glAttachShader(shaderProgram, fragmentShader); - glLinkProgram(shaderProgram); - - GLuint vao; - glGenVertexArrays(1, &vao); - //vbo GLuint vbo; glGenBuffers(1, &vbo); // Generate 1 buffer @@ -107,9 +88,26 @@ int main(int argc, char *argv[]) glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW); + //shaders + + GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vertexShader, 1, &vertcode, NULL); + glCompileShader(vertexShader); + + GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fragmentShader, 1, &fragcode, NULL); + glCompileShader(fragmentShader); + + + GLuint shaderProgram = glCreateProgram(); + glAttachShader(shaderProgram, vertexShader); + glAttachShader(shaderProgram, fragmentShader); + glLinkProgram(shaderProgram); + //-----vao----- - + GLuint vao; + glGenVertexArrays(1, &vao); glBindVertexArray(vao); //-----vao----- @@ -123,10 +121,10 @@ int main(int argc, char *argv[]) glEnableVertexAttribArray(colAttrib); glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, 5*sizeof(GLfloat), (void*)(2*sizeof(GLfloat))); - //glBindFragDataLocation(shaderProgram, 0, "outColor"); + glBindFragDataLocation(shaderProgram, 0, "outColor"); - //GLint uniColor = glGetUniformLocation(shaderProgram, "triangleColor"); - //glUniform3f(uniColor, 1.0f, 0.0f, 0.0f); + GLint uniColor = glGetUniformLocation(shaderProgram, "triangleColor"); + glUniform3f(uniColor, 1.0f, 0.0f, 0.0f); diff --git a/shaders.json b/shaders.json index 6c0e223..a9f14d1 100644 --- a/shaders.json +++ b/shaders.json @@ -1,12 +1,9 @@ { "vertex":[ - {"path":"shaders/vertex/simple.glsl"} + "shaders/vertex/simple.glsl" ], "fragment":[ - { - "path":"shaders/fragment/simple.glsl", - "framebuff_output":["outColor"] - } + "shaders/fragment/simple.glsl" ], "combos":[ diff --git a/test.cpp b/test.cpp index 57e5371..9e1c3f9 100644 --- a/test.cpp +++ b/test.cpp @@ -1,53 +1,15 @@ -#include "engine/object.hpp" #include "engine/rendering.hpp" -#include "engine/shader.hpp" #include int main(int argc, char *argv[]) { rendering renderer; renderer.SDLinit(); SDL_Window *window = - SDL_CreateWindow("aaa", 20, 20, 800, 600, SDL_WINDOW_OPENGL); + SDL_CreateWindow("aaa", 20, 20, 500, 500, SDL_WINDOW_OPENGL); renderer.GLinit(window); renderer.Shaderinit(); - GLfloat vertices[] = { - -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, // Top-left - 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, // Top-right - 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, // Bottom-right - -0.5f, -0.5f, 1.0f, 1.0f, 1.0f // Bottom-left - }; - - GLuint elements[] = {0, 2, 3, 1, 2, 3}; - - - gameobject test(&renderer.shaders.at(0)); - // renderer.objects.push_back(test); - - test.element_number = 6; - test.elements = elements; - - test.genVbo(vertices, 20); - test.genEbo(); - - glBindVertexArray(test.vao); - - test.rend_shader->use(); - - GLint posAttrib = test.rend_shader->getInputId("position"); - glEnableVertexAttribArray(posAttrib); - glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), - 0); - - GLint colAttrib = test.rend_shader->getInputId("color"); - glEnableVertexAttribArray(colAttrib); - glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), - (void *)(2 * sizeof(GLfloat))); - - /*GLint uniColor = - glGetUniformLocation(test.rend_shader->shaderProgram, "triangleColor"); - glUniform3f(uniColor, 1.0f, 0.0f, 0.0f);*/ SDL_Event windowEvent; @@ -59,20 +21,8 @@ int main(int argc, char *argv[]) { windowEvent.key.keysym.sym == SDLK_ESCAPE) break; } - - GLenum err = glGetError(); - if (err != GL_NO_ERROR) { - std::cout << err<<"\n"<