我正在尝试将 GLSL 顶点/片段着色器源加载到 const char* 数组中以与 OpenGL 一起使用。我用来做的功能是
const char* loadSource(const char* path)
{
string line;
stringstream output;
ifstream source(path);
if(source.is_open())
{
while(source.good())
{
getline(source, line);
output << line << endl;
}
source.close();
}
return output.str().c_str();
}
源输入在第一次调用时工作正常。但是,如果我调用第二个源,第一个源会“损坏”(两个调用都在单个函数的范围内):
const char* vs_source = loadSource("vertex.vert"); // vs_source loads fine
const char* fs_source = loadSource("fragment.frag"); // fs_source loads fine. vs_source is terminated sooner than after previous call.
注意:我尝试将 vs_source 直接编码到 *.cpp 文件中,并编译了两个着色器。这表明我必须在 loadSource 函数中做一些愚蠢的事情。
问题:是什么导致文本输入出现这种奇怪的行为?