Я собираю OpenGL-приложение с использованием Qt 5.11.2. При добавлении тесселяционного шейдера возникает следующая ошибка:
QOpenGLShader :: compile (Управление тесселяцией): 0 (2): ошибка C0204: директива версии должна быть первым оператором и не может повторяться
*** Problematic Tessellation Control shader source code ***
#define lowp
#define mediump
#define highp
#line 1
´╗┐#version 400
#line 1
layout (vertices = 4) out;
Я работаю в Windows 10 с графическим процессором Geforce GTX 1050 / PCIe / SSE2.
Я нашел похожие отчеты, но ни один из ответов не помог мне: не удалось скомпилировать шейдеры GLSL на Qt 5.3 после обновления драйвера Nvidia
Серьезные проблемы с рендерингом в OpenGL 4.1 и Qt 5
Шейдер выглядит так:
#version 400
layout (vertices = 4) out;
uniform float animationFrame;
in vec3 v_vertex[];
out vec3 tc_vertex[];
void main()
{...}
Чтобы добавить шейдер, я использую следующий код:
addShader(QOpenGLShader::Vertex, "data/cube.vert", *m_program);
addShader(QOpenGLShader::Fragment, "data/cube.frag", *m_program);
addShader(QOpenGLShader::TessellationControl, "data/cube.tcs", *m_program);
addShader(QOpenGLShader::TessellationEvaluation, "data/cube.tes", *m_program);
addShader(QOpenGLShader::Geometry, "data/cube.geom", *m_program);
Очевидно, что первые строки, вставленные Qt, выдают ошибку. Есть идеи как решить эту проблему?