2017-02-20 24 views
0

Я портирую шейдеры WebGL GLSL на рабочий стол OpenGL GLSL, используя #version 120.Расширение GLSL для поддержки?: Тройной оператор?

Есть ли расширение, которое добавит поддержку для тройного оператора ?:?

как:

#extension GL_EXT_***: enable 
+1

Это явно проблема XY. Что вы сделали, что заставляет вас думать, что '?:' Is * not * поддерживается в GLSL? –

+0

это может быть, но #version 120 - это ошибки кашля – neosettler

+1

Вот что делает [проблема XY] (http://meta.stackexchange.com/a/66378/164572). Ваша проблема в том, что ваш код дает вам ошибки. Вы * думаете *, что ошибки связаны с '?:' Не поддерживаются. Вместо этого вы должны спросить о вашей * реальной * проблеме: ваш код дает вам ошибки. –

ответ

3

Нет расширения необходимо, это правильно в базовой спецификации:

OpenGL Shading Language 1.20 Specification, раздел 5.9 "Выражения", страница 38, шестая пуля:

троичной оператор выбора (? :). Он работает на трех выражениях (exp1? Exp2: exp3). Этот оператор оценивает первое выражение, которое должно приводить к скалярному булевому. Если результат верен, он выбирает оценку второго выражения, в противном случае он выбирает оценку третьего выражения. Оценивается только одно из второго и третьего выражений. Второе и третье выражения могут быть любыми типами, до тех пор, пока их типы совпадают, или существует преобразование в разделе 4.1.10 «Неявные преобразования», которое может быть применено к одному из выражений, чтобы совместить их типы. Этот результирующий тип соответствия является типом всего выражения.

+0

Понял, спасибо вам большое! – neosettler