Assume I have a function like so:
std::string get_shader(std::string path) { std::string fullpath = "./resources/shaders/" + path; std::ifstream vertexShaderFile(fullpath); std::ostringstream vertexBuffer; vertexBuffer << vertexShaderFile.rdbuf(); return vertexBuffer.str(); } And then some code like this:
GLuint vertex_shader; GLuint fragment_shader; GLuint program; const GLchar * vertex_shader_source = get_shader("triangle_vertex.vs").c_str(); // At this point vertex_shader_source is correct. const GLchar * fragment_shader_source = get_shader("fragment.vs").c_str(); // Now vertex_shader_source is the same as fragment_shader_source I don't understand why vertex_shader_source ends up being overwitten by a subsequent call to get_shader. How do I fix this?