Как я могу сказать QtCreator принять функцию `texture ()`, как это было сделано для функций `texture * D ()`? - PullRequest
0 голосов
/ 25 апреля 2020

Я использую QtCreator 4.12 в качестве обобщенной c C ++ IDE, установленной из менеджера пакетов моего дистрибутива, так что это общий вопрос c об использовании QtCreator, в частности, не связанном с Qt, а также при сборке QtCreator из исходного кода.

Как и любая IDE, QtCreator выделяет потенциальные ошибки при написании кода. в файле. cpp, если я напишу int x = 0 и нажму Enter, 0 будет подчеркнут красным, и появится подсказка, сообщающая, что я забыл ; в конце строки.

Это описано в документации QtCreator , но я не смог найти ничего в этой документации о GLSL.

Мой настоящий проект - это C ++ с игрой openGl, и я ' Редактирую мои шейдеры GLSL в QtCreator.

Читая ответ на этот вопрос, я узнал, что все функции texture*D() устарели с openGL 3.3 и должны быть заменены на texture(), который определяет размер текстуры, поэтому я решил обновить свои шейдеры.

В QtCreator, когда я использую функцию texture(), вся строка подчеркнута красным цветом с подсказкой выражение слишком сложное , тогда как когда я использую texture2D() (или texture1D() или другое), строка не подчеркивается, как показано на следующих рисунках:

  • устарел GLSL : legacy GLSL code* 10 31 *

  • GLSL недекларируемый: modern GLSL code

Это не мешает моим шейдерам работать как задумано Таким образом, здесь нет никаких реальных проблем, но это действительно беспокоит.

Я ничего не знаю о механизме проверки синтаксических ошибок больше, чем то, что написано на странице связанной документации, и я ищу способ изменить этот механизм, чтобы принять GLSL 3.3+. Я бы принял ответ, в котором говорилось бы, как заставить замолчать этот параметр c ложных срабатываний в качестве обходного пути или способ деактивировать проверку синтаксических ошибок для файлов .glsl, но я бы действительно хотел понять, как можно настроить механизм проверки ошибок принять современный глсл так же, как и для прежних.

...