From 62b204ba563d47623ff749d4e1460ef8174ce96e Mon Sep 17 00:00:00 2001 From: Meoweg Date: Fri, 13 Nov 2015 11:29:42 +0000 Subject: [PATCH] Bind program attributes from code --- data/shaders/textured/attrib.txt | 3 --- src/main.cpp | 4 ++++ src/program.cpp | 20 +++++++------------- src/program.hpp | 3 ++- 4 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 data/shaders/textured/attrib.txt diff --git a/data/shaders/textured/attrib.txt b/data/shaders/textured/attrib.txt deleted file mode 100644 index afd5f15..0000000 --- a/data/shaders/textured/attrib.txt +++ /dev/null @@ -1,3 +0,0 @@ -position -normal -tex_coord diff --git a/src/main.cpp b/src/main.cpp index 0f6cb81..ef6c168 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -73,7 +73,11 @@ int main() emscripten_set_mousemove_callback(nullptr, nullptr, false, on_em_mousemove); Program *program = new Program("textured"); + program->bind_attrib_location(INDEX_POSITION, "position"); + program->bind_attrib_location(INDEX_NORMAL, "normal"); + program->bind_attrib_location(INDEX_TEX_COORD, "tex_coord"); program->link(); + program->use(); mvp_uniform = program->get_uniform_location("mvp"); diff --git a/src/program.cpp b/src/program.cpp index e9d932e..788c18d 100644 --- a/src/program.cpp +++ b/src/program.cpp @@ -20,22 +20,11 @@ Program::Program(const std::string &name) glAttachShader(_id, vertex_shader.id()); glAttachShader(_id, fragment_shader.id()); - - std::ifstream file(path + "attrib.txt", std::ios::in); - - std::string line; - int index = 0; - - while (std::getline(file, line)) - glBindAttribLocation(_id, index++, line.c_str()); - - for (int i = 0; i < index; ++i) - glEnableVertexAttribArray(i); } -void Program::use() const +void Program::bind_attrib_location(GLuint index, const GLchar *name) { - glUseProgram(_id); + glBindAttribLocation(_id, index, name); } void Program::link() @@ -43,6 +32,11 @@ void Program::link() glLinkProgram(_id); } +void Program::use() const +{ + glUseProgram(_id); +} + GLuint Program::get_uniform_location(const GLchar *name) const { return glGetUniformLocation(_id, name); diff --git a/src/program.hpp b/src/program.hpp index f74b158..2baa07f 100644 --- a/src/program.hpp +++ b/src/program.hpp @@ -9,10 +9,11 @@ struct Program { Program(const std::string &name); - void use() const; + void bind_attrib_location(GLuint index, const GLchar *name); void link(); + void use() const; GLuint get_uniform_location(const GLchar *name) const; private: