我遇到了以下问题。我有两个着色器(完全不相关),它们强制转换为 int 和浮动,但方式不同。
来自 Shader #1 的投射示例(int 到 float):
color = vec4(float(fragment_count) / float(MAX_FRAGMENTS));
来自 Shader #2 的投射示例(浮点数到整数):
int abNumFrag=(int)imageLoad(abufferCounterImg, coords).r;
第一个着色器编译正常,但第二个抛出错误:
“OpenGL 不允许 C 样式转换”
除非我启用扩展:#extension GL_NV_gpu_shader5:启用
(int)someFloat 与强制转换 int(someFloat) 不一样吗?