Opengl GLSL扩展以支持?:三元运算符?

Opengl GLSL扩展以支持?:三元运算符?,opengl,glsl,ternary-operator,Opengl,Glsl,Ternary Operator,我正在使用#版本120将WebGL GLSL着色器移植到OpenGL GLSL桌面 是否有任何扩展可以添加对?:三元运算符的支持 比如: 不需要扩展,它在基本规范中是正确的: ,第5.9节“表达”,第38页,第6项: 三元选择运算符(?:)。它对三个表达式(exp1?exp2:exp3)进行操作。此运算符计算第一个表达式,该表达式必须生成标量布尔值。如果结果为真,则选择计算第二个表达式,否则选择计算第三个表达式。只计算第二个和第三个表达式中的一个。第二个和第三个表达式可以是任何类型,只要它们的类

我正在使用
#版本120
将WebGL GLSL着色器移植到OpenGL GLSL桌面

是否有任何扩展可以添加对
?:
三元运算符的支持

比如:


不需要扩展,它在基本规范中是正确的:

,第5.9节“表达”,第38页,第6项:

三元选择运算符(?:)。它对三个表达式(exp1?exp2:exp3)进行操作。此运算符计算第一个表达式,该表达式必须生成标量布尔值。如果结果为真,则选择计算第二个表达式,否则选择计算第三个表达式。只计算第二个和第三个表达式中的一个。第二个和第三个表达式可以是任何类型,只要它们的类型匹配,或者第4.1.10节“隐式转换”中有一个转换,可以应用于其中一个表达式以使它们的类型匹配。此结果匹配类型是整个表达式的类型


这显然是一个XY问题。您做了什么使您认为GLSL不支持
?:
?可能是,但#版本120出现了咳嗽错误,这就是为什么它是一个错误。你的问题是你的代码给了你错误。您认为错误是由于不支持
?:
造成的。相反,你们应该问你们真正的问题:你们的代码给了你们错误。哦,我明白你们的意思了。我会保持警惕,但是在移植了几千个着色器之后,我在每个实例中都会遇到这种错误,并且当使用相同的代码与if/else一起使用时,它们的行为都是正确的。某些着色器确实有效。。。有些则不然。这的确很奇怪。
#extension GL_EXT_***: enable