在GLSLes2.0中,使用整数可以做的事情似乎非常有限。
例如:
int类型。所以,似乎你唯一能用整数做的事情是:
-,+,*,/),但只在其他整数之间。不存在允许将float和int添加到一起的运算符。vec构造函数允许您传递整数。真的是这样吗?除了int构造函数之外,是否还有其他接受vec参数的内部函数?您可以在float和int之间执行任何操作吗?
发布于 2015-12-04 12:23:18
您是正确的,整数的用例是有限的。根据OpenGL ES阴影语言规范,4.1.3:
整数主要是作为编程辅助工具支持的。在硬件级别,实际整数将有助于高效地实现循环和数组索引,以及引用纹理单元。但是,在硬件中,不需要将语言中的整数映射为整数类型。预计底层硬件不完全支持范围广泛的整数操作。OpenGL ES阴影语言实现可以将整数转换为浮动以对其进行操作。因此,没有可移植的包装行为。
由于无法保证GLSL ES整数类型映射到硬件整数类型,所以它只对编译时类型检查有用,在运行时几乎没有效果。规范中列出了需要整数的所有位置。
https://stackoverflow.com/questions/34088055
复制相似问题