在GLSL ES 2.0中,使用整数可以做的事情非常有限。
例如:
int
类型所以,你似乎唯一可以用整数做的事情是:
-
,+
,*
,/
),但仅限于其他整数之间。不存在允许您一起添加float
和int
的运算符。vec
构造函数允许您传递整数int
构造函数之外的vec
参数?您可以在float
和int
之间执行任何操作吗?
答案 0 :(得分:4)
你是对的,整数用例是有限的。每OpenGL ES Shading Language spec,4.1.3:
主要支持整数作为编程辅助工具。在硬件级别,实数整数将有助于高效实现循环和数组索引,以及引用纹理单元。但是,没有要求语言中的整数映射到硬件中的整数类型。预计底层硬件不会完全支持各种整数操作。 OpenGL ES着色语言实现可以将整数转换为浮点数以对它们进行操作。因此,没有便携式包装行为。
由于无法保证GLSL ES整数类型映射到硬件整数类型,因此它仅对编译时类型检查有用,在运行时几乎没有效果。所有需要整数的地方都会在规范中列出。