Я пишу функцию для разбора кода шейдера на строки c ++, которые компилируется openGL.
ShaderSource LoadShaders(const string &filepath)
{
std::ifstream file(filepath);
enum class MODES
{
NONE = -1, VS = 0, FS = 1
};
string line;
std::stringstream ss[2];
MODES mode = MODES::NONE;
while (getline(file, line))
{
if (line.find("#shader") != string::npos)
{
if (line.find("vertex") != string::npos)
mode = MODES::VS;
else if (line.find("fragment") != string::npos)
mode = MODES::FS;
}
else
{
ss[(int)mode] << line << "\n";
}
}
file.close();
return { CompileShader(GL_VERTEX_SHADER, ss[0].str().c_str()),
CompileShader(GL_FRAGMENT_SHADER, ss[1].str().c_str()) };
}
Я получаю ошибку повреждения кучи после случайного блока # 231 в строках std :: ifstream file (filepath);в то время как цикл.