мое маленькое приложение OpenGL прекрасно работает в режиме отладки, но если я построю его в режиме выпуска, я часто получаю эту ошибку:программа OpenGL работает только в режиме отладки в Visual Studio 2013
Shader Creation Error:
- Vertex shader failed to compile with the following errors:
ERROR: 0:22: error(#132) Syntax error: "]" parse error
ERROR: error(#273) 1 compilation errors. No code generateder code here
Странная вещь, что ошибка происходит большую часть времени, но иногда программа работает нормально. Я думаю, что это имеет какое-то отношение к филе, но я не могу понять, что это такое.
Это соответствующая часть моего кода:
std::ifstream file(fp);
if(!file) crit_error("Shader Loading", ("file "+fp+" doesn't exist").c_str());
file.seekg(0, file.end);
GLint len = GLint(file.tellg());
file.seekg(0, file.beg);
GLchar* buf = new GLchar[len];
file.read(buf, len);
file.close();
std::string type = fp.substr(fp.size()-4, 4);
if(type == ".vsh")
id = glCreateShader(GL_VERTEX_SHADER);
else if(type == ".fsh")
id = glCreateShader(GL_FRAGMENT_SHADER);
else if(type == ".csh")
id = glCreateShader(GL_COMPUTE_SHADER);
glShaderSource(id, 1, (const GLchar**)&buf, &len);
glCompileShader(id);
delete[] buf;
Попробуйте написать 'buf' в файл и смотрит на него. Возможно, вы ушли от одного или что-то в этом роде. На самом деле этого кода недостаточно, чтобы узнать об этом. Это поможет вашему вопросу показать, как вы находите 'len' и что такое' fp'. –
Да, я забыл эту часть извините – bakkaa
Может кто-нибудь сказать мне, почему у меня есть -1 для вопроса? что я сделал не так? – bakkaa