Opengl es GLSL ES 2:将制服用作颜色/矢量是否安全;数组下标?
目的是:Opengl es GLSL ES 2:将制服用作颜色/矢量是否安全;数组下标?,opengl-es,Opengl Es,目的是: 对纹理进行采样并获得颜色 与其通过.x/y/z/r/g/b获取颜色分量,不如使用以下形式:颜色[TheInUniform],即数组下标符号 在OpengGL ES 2.0编程指南中: “你需要做一件事 但是,要注意的是,如果你访问一个具有非常数积分的向量 表达式(例如,使用整数变量索引),则这可能不是 在OpenGL ES 2中受支持。.0。“ “OpenGL ES 2.0规范不强制支持此行为,除了 关于特定变量类型(即统一变量)。” 第二句话是说“一致可以用作数组下标”还是“可以
- 对纹理进行采样并获得颜色
- 与其通过.x/y/z/r/g/b获取颜色分量,不如使用以下形式:颜色[TheInUniform],即数组下标符号
然而,即使得到支持,这样做也不是一个好主意。根据我的经验,在大多数移动架构上,基于动态或统一的索引可能比使用常量索引或swizzle语法(即编译时,因此可以由编译器“内联”并直接编码到指令中)要慢。谢谢!稍微慢一点是可以接受的,毕竟,使用另一种动态方法(用均匀向量点选组件)可能会更慢。我只是想确定这是否有效。不,它不能保证有效,正如《编程指南》所述,它不适用于变量。@macrod知道OpenGL ES着色语言v1.0规范文档中哪一位禁止它吗?我引用的部分似乎明确允许变量索引,它特别指出“任意”整数表达式可以是向量索引的数组下标。没有提到编译时常量表达式或统一表达式的必要性。在第10.25节中发现它作为脚注潜伏着-完全正确,它不保证得到支持。嗯,通过说“任何整数”,规范可能意味着(这不是很清楚),任何整数作为统一向量的索引,在中有两次出现“任意整数”。