Название: Qt не распознаёт версию шейдера [Qt5.7, C++] Отправлено: Crazy Sage от Январь 18, 2017, 10:15 Пытаюсь запустить шейдер в консольном Qt-приложении, получаю следующую ошибку
Код: QOpenGLShader::compile(Compute): 0(1) : error C0201: unsupported version 44 Шейдер гарантированно рабочий, в программе на OpenFrameworks он работает безо всяких проблем (но по требованию заказчика надо теперь работать на Qt), шейдер начинается со строки Код: #version 440 Контекст OpenGL инициализируется в main.cpp следующим образом Код: QSurfaceFormat surfaceFormat; код подключения шейдера выглядит следующим образом Код: QOpenGLShaderProgram compute; Кто-нибудь знает, в чём может быть проблема? Название: Re: Qt не распознаёт версию шейдера [Qt5.7, C++] Отправлено: Crazy Sage от Январь 18, 2017, 10:40 Разобрался, может кому ещё пригодится.
Файл шейдера был сохранён в Visual Studio, соответственно в win-кодировке. Программа на openFrameworks также была собрана под MSVC, поэтому в ней этот шейдер спокойно обрабатывался, Qt же (по крайней мере версия под MinGW) оказалось неспособно прожевать виндоузовские окончания строк. Принудительное пересохранение файла шейдера в UTF-8 решило проблему. Название: Re: Qt не распознаёт версию шейдера [Qt5.7, C++] Отправлено: Авварон от Январь 18, 2017, 12:07 Разобрался, может кому ещё пригодится. Файл шейдера был сохранён в Visual Studio, соответственно в win-кодировке. Программа на openFrameworks также была собрана под MSVC, поэтому в ней этот шейдер спокойно обрабатывался, Qt же (по крайней мере версия под MinGW) оказалось неспособно прожевать виндоузовские окончания строк. Принудительное пересохранение файла шейдера в UTF-8 решило проблему. Код: bool QOpenGLShader::compileSourceFile(const QString& fileName) Заведите баг что он должен открывать с флагом QFile::Text |