【发布时间】:2016-11-18 18:29:54
【问题描述】:
这是我的整个片段着色器代码,非常简单:
precision highp float;
void main( void )
{
float a = 66061311.0;
if(a == 66061312.0)
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
else
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
为什么屏幕清晰到红色。 当我将 a 设置为 66061315.0 时,屏幕清晰为绿色。 这让我很困惑。据我了解,66061311.0在float类型的范围内。
我该如何解决或解决这个问题?
【问题讨论】:
-
首先,不要将代码发布为图片。只需将其正确插入您的问题。其次,我们不知道
color的组件持有什么值。其次,我们不知道您的浮点数声明的精度。如果您选择了precision mediump float;,那么您的可表示整数范围最小为[-2^15, 2^15 -1],这当然小于您的左操作数。 -
对不起,我已经修改了问题。我使用高精度。但结果还是和以前一样。我在 ARM Mali GPU 的 PC 和 Android 手机上试过,结果是一样的。
标签: opengl-es shader fragment-shader