Я получаю следующее сообщение об ошибке при попытке связать мой фрагмент шейдера,QGLShaderProgram OpenGL шейдеры
QGLShader :: компилировать (фрагмент): 0 (4): ошибка C0000: синтаксическая ошибка, неожиданный '' , ожидая «::» в токене ».
Я просто пытаюсь реализовать простой шейдер фрагмента, который устанавливает цвет в зеленый цвет.
Код для моих вершинных шейдеров (который работает) имя файл shader.vert
#version 430
in layout(location=0) vec2 position;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
}
Код для моего пиксельного шейдера shader.frag
#version 430
out vec4 finalColour;
void main()
{
finalColour = vec4(0.0, 1.0, 0.0, 1.0);
}
Код, который связывает QGLShaderProgram mProgram
//Add Shaders
if (!mProgram.addShaderFromSourceFile(QGLShader::Vertex, "shader.vert")) {
error_msg("Vertex shader load failed");
}
if (!mProgram.addShaderFromSourceCode(QGLShader::Fragment, "testShader.frag")) {
error_msg("Fragment shader load failed");
}
if (!mProgram.link()) {
error_msg("Cannot link shaders");
}
mProgram.bind()
для второй параметр запрашивает имя файла, вы можете посмотреть спецификации, [QGLShaderProgram :: addShaderFromSourceFile] (http://doc.qt.io/qt-4.8/qglshaderprogram.html#addShaderFromSourceFile). Также shader.vert загружает штраф. фрагментарный шейдер - это не так. –
вы загружаете вершинный шейдер из файла и фрагментарный шейдер из кода .. измените имя функции .. из addShaderFromSourceCode в addShaderFromSourceFile – mofed8461