Я пытаюсь загрузить простую программу GLSL из файла .txt
. Вот функция, которая загружает файл:Что не так с этим кодом glsl?
string getShaderSource(char path[])
{
string out;
ifstream mFile;
stringstream buf;
mFile.open(path);
if (mFile.is_open())
{
buf << mFile.rdbuf();
out = buf.str();
}
else
printf("Cannot open shader source file.");
mFile.close();
//out.append("\0");
return out;
}
И я использую использовать функцию следующим образом:
string vs = getShaderSource("C:/vs.txt");
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, (const GLchar**)&vs, NULL);
Проблема шейдер делает не компилирует ни на что, здесь ошибка:
0(1) : error C0000: syntax error, unexpected $undefined at token "<undefined>"
Очень простой код GLSL:
#version 410
layout (location = 0) in vec3 vp;
layout (location = 1) in vec3 color;
smooth out vec4 theColor;
void main() {
gl_Position = vec4 (vp, 1.0);
theColor = vec4(color, 0.0);
}
Я знаю, что есть похожие вопросы, я много пробовал исправить проблему, но никакого прогресса. Что я делаю не так?
Вы указали код, загружающий источник шейдера, но проблема заключается в компиляции источника шейдера. Пожалуйста, покажите это. Чтобы исключить загрузчик исходников шейдера, временно скопируйте его источник шейдера и посмотрите, получилось ли у вас одно и то же сообщение. –
какого типа 'vs'? – Axalo
@Axalo std :: string, извините, что вещь fs была опечаткой. –