Ну, это немного проблема, я не могу загрузить какой-либо файл через программу, которую я сделал. Моя программа прерывается каждый раз, независимо от файла, который я пытаюсь загрузить, поэтому я не совсем уверен, что происходит. В частности, предполагается, что программа загружает шейдеры GLSL, и она не работает. Вот мой код:Ошибка загрузки файла
static inline GLuint GetProgram(const char* vert,const char* frag)
{
GLuint vertex,fragment;
vertex = glCreateShader(GL_VERTEX_SHADER);
fragment = glCreateShader(GL_FRAGMENT_SHADER);
std::string vCode,fCode;
std::ifstream vss(vert);
std::ifstream fss(frag);
if(vss.is_open())
{
std::string line;
while(std::getline(vss,line))
{
vCode += line + '\n';
}
}
else
{
OutputDebugStringA("ERROR READING VERTEX SHADER\n");
}
if(fss.is_open())
{
std::string line;
while(std::getline(fss,line))
{
fCode += line + '\n';
}
}
else
{
OutputDebugStringA("ERROR READING FRAGMENT SHADER\n");
}
vss.close();
fss.close();
char const* vsp = vCode.c_str();
char const* fsp = fCode.c_str();
glShaderSource(vertex,1,&vsp,NULL);
glShaderSource(fragment,1,&fsp,NULL);
OutputDebugStringA("Vertex Source:\n");
OutputDebugStringA(vsp + '\n');
OutputDebugStringA("Fragment Source:\n");
OutputDebugStringA(fsp + '\n');
glCompileShader(vertex);
glCompileShader(fragment);
GLuint prog = glCreateProgram();
glAttachShader(prog,vertex);
glAttachShader(prog,fragment);
glLinkProgram(prog);
char errbuf[1024];
GLsizei len;
glGetProgramInfoLog(prog,sizeof(errbuf),&len,errbuf);
OutputDebugStringA(errbuf);
glUseProgram(prog);
return prog;
}
vss.is_open() и fss.is_open() возвращают ложные каждый раз. Эта проблема возникает только с этой программой, у меня есть другая, которая запускает ту же самую функцию, и она работает нормально.
Как я зову его:
GLuint program = Shader::GetProgram("v.vert","f.frag");
Каталог:
проверить путь к файлу. – Raxvan
Файл находится в том же каталоге, в котором программа –
попробует это: 'std :: ifstream ifs; ifs.open (path) ' – Raxvan