下面有计算着色器:
#version 430
layout(local_size_x = 1) in;
uniform float _M, _m;
layout(std430, binding = 40) writeonly buffer Buf
{
vec4 _value[5];
};
void main()
{
float ratio = _M / _m;
for (int i = 0; i < 5; ++i)
{
float p = float(i) * .5;
_value[i] = vec4(ratio, p, pow(ratio, p), 0);
}
}
运行方式:
glUniform1f(mm, 1);
glUniform1f(mM, 2);
glDispatchCompute(1, 1, 1);
在缓冲区中运行后: buffer content
2 ^ .5的值不正确。 如果“着色”变量在着色器中设置为2.,则全部正确。 如果功率乘以.4或.6而不是.5,则全部正确。 什么可能导致这种行为?