0
这里是我的整个片段着色器的代码,这是相当简单:OpenGL ES 2.0的着色器浮点数据精度
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类型的范围内。
我该如何解决或解决这个问题?
首先,不要将代码作为图像发布。只需将其正确插入到您的问题中。其次,我们不知道“颜色”组件的价值。其次,我们不知道你的浮动是以什么精度宣布的。如果你选择'precision mediump float',那么你可表示的整数范围是最小的[[-2^15,2^15 -1]],这当然小于你的左手操作数。 – thokra
对不起,我修改了这个问题。我使用highp精度。但结果仍然和以前一样。我在带有ARM Mali GPU的PC和Android手机上试过,结果是一样的。 –