You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在片段着色器中对浮点数取模为何出现语法错误?

片段着色器语法错误排查:强制类型转换与取模运算问题

问题描述

刚接触片段着色器,以下代码出现语法错误:

if ((int) pos.y % 9 == 1) shade = 1;

其中pos.y和shade均为浮点数,意图通过(int)转换pos.y后使用取模运算,错误提示为:

ERROR: 0:17: ')' : syntax error syntax error

检查括号数量未发现问题,需排查错误原因及解决方法。

错误原因

GLSL(OpenGL着色器语言)不支持C风格的(类型)强制转换语法,你写的(int) pos.y不符合GLSL的语法规则。着色器编译器会把这个结构解析成语法错误,误以为括号不匹配,从而抛出')'相关的语法错误提示。

解决方法

GLSL中需要使用构造函数式的类型转换,即int(pos.y)来完成浮点数到整数的转换。同时,由于shade是浮点数,赋值时建议使用1.0而非1,保持类型一致性:

if (int(pos.y) % 9 == 1) shade = 1.0;

内容的提问来源于stack exchange,提问作者Sitacious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:12:34