Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- shaders::shaders()
- {
- std::cout << "Shaders constructed." << std::endl;
- load l;
- std::string str;
- l.fileToString("config/shaders.txt", &str);
- str.erase (std::remove(str.begin(), str.end(), '\n'), str.end());
- int p = 0;
- int iterations = str[p] - '0';
- for(int i = 0; i < iterations; i++)
- {
- std::string type;
- for(p++; str[p] != ':'; p++) type += str[p];
- std::string directory;
- for(p++; str[p] != ';'; p++) directory += str[p];
- if(type == "vertex")
- {
- std::string source;
- l.fileToString(directory.c_str(), &source);
- createProgram(GL_VERTEX_SHADER, source, &program);
- std::cout << "Vertex shader attached to program." << std::endl;
- }
- else if(type == "fragment")
- {
- std::string source;
- l.fileToString(directory.c_str(), &source);
- createProgram(GL_FRAGMENT_SHADER, source, &program);
- std::cout << "Fragment shader attached to program." << std::endl;
- }
- else
- {
- std::cout << "Invalid shader type." << std::endl;
- }
- }
- }
- void shaders::createProgram(GLuint shaderType, std::string data, GLuint *program)
- {
- GLuint shader = glCreateShader(shaderType);
- const char *source[1] = { data.c_str() };
- glShaderSource(shader, 1, source, 0);
- glCompileShader(shader);
- GLint success = 0;
- glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
- if(success) std::cout << "Successful shader compilation." << std::endl;
- else std::cout << "Unsuccessful shader compilation." << std::endl;
- *program = glCreateProgram();
- glAttachShader(*program, shader);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement