diff --git a/src/common/gl_program.cpp b/src/common/gl_program.cpp index 7c033028b..6a94afdde 100644 --- a/src/common/gl_program.cpp +++ b/src/common/gl_program.cpp @@ -1,8 +1,12 @@ #include "gl_program.h" #include "YBaseLib/Log.h" +#include "YBaseLib/String.h" #include +#include Log_SetChannel(GL); +static u32 s_next_bad_shader_id = 1; + namespace GL { Program::Program() = default; @@ -40,6 +44,17 @@ GLuint Program::CompileShader(GLenum type, const char* source) else { Log_ErrorPrintf("Shader failed to compile:\n%s", info_log.c_str()); + + std::ofstream ofs(SmallString::FromFormat("bad_shader_%u.txt", s_next_bad_shader_id++), + std::ofstream::out | std::ofstream::binary); + if (ofs.is_open()) + { + ofs.write(sources[0], source_lengths[0]); + ofs << "\n\nCompile failed, info log:\n"; + ofs << info_log; + ofs.close(); + } + glDeleteShader(id); return 0; }