Opengl es GLSL ES中的整数可以做什么?
在GLSL ES 2.0中,使用整数可以做的事情似乎非常有限 例如:Opengl es GLSL ES中的整数可以做什么?,opengl-es,glsl,shader,Opengl Es,Glsl,Shader,在GLSL ES 2.0中,使用整数可以做的事情似乎非常有限 例如: 不支持按位操作 似乎没有内在函数接受int类型 所以,似乎你能真正用整数做的唯一一件事是: 将整数赋值给整数 按索引访问数组元素 基本算术(-,+,*,/),但仅在其他整数之间。不存在允许您同时添加浮点和int的运算符 相互比较 将它们转换为其他类型 vec构造函数允许您传递整数 真的是这样吗?除了vec构造函数之外,是否有任何采用int参数的内在函数?在float和int之间是否可以执行任何操作?您是正确的,整数的使
- 不支持按位操作
- 似乎没有内在函数接受
类型int
- 将整数赋值给整数
- 按索引访问数组元素
- 基本算术(
,-
,+
,*
),但仅在其他整数之间。不存在允许您同时添加/
和浮点
的运算符int
- 相互比较
- 将它们转换为其他类型
构造函数允许您传递整数vec
真的是这样吗?除了
vec
构造函数之外,是否有任何采用int
参数的内在函数?在float
和int
之间是否可以执行任何操作?您是正确的,整数的使用情况是有限的。根据第4.1.3节:
整数主要支持作为编程辅助。在硬件级别,实整数将有助于有效实现循环和数组索引,以及引用纹理单元。但是,不要求语言中的整数映射到硬件中的整数类型。底层硬件并不完全支持广泛的整数操作。OpenGL ES着色语言实现可以将整数转换为浮点以对其进行操作。因此,不存在可移植的包装行为
由于无法保证GLSL ES integer类型映射到硬件整数类型,因此它只对编译时类型检查有用,在运行时几乎没有影响。规范中列出了需要整数的所有位置。如果可以在两者之间进行转换,还需要什么?