Opengl es 如何在GLSL ES中定义二维数组?
我试过这个代码Opengl es 如何在GLSL ES中定义二维数组?,opengl-es,glsl,glsles,Opengl Es,Glsl,Glsles,我试过这个代码 varying vec2 blurCoordinates[2][2]; 但这会导致错误: 顶点着色器编译失败。 错误:0:10:“[”:语法错误:语法错误 错误:1个编译错误。未生成代码。正如genpfault的回答中已经指出的,GLSL从一开始就不支持多维数组 该扩展确实提供了您正在寻找的功能。它在版本4.3中被提升为OpenGL核心功能,因此从GLSL 4.30开始,您可以使用它而不依赖扩展。正如genpfault在回答中已经指出的,GLSL从一开始就不支持多维数组 扩展确
varying vec2 blurCoordinates[2][2];
但这会导致错误:
顶点着色器编译失败。
错误:0:10:“[”:语法错误:语法错误
错误:1个编译错误。未生成代码。正如genpfault的回答中已经指出的,GLSL从一开始就不支持多维数组
该扩展确实提供了您正在寻找的功能。它在版本4.3中被提升为OpenGL核心功能,因此从GLSL 4.30开始,您可以使用它而不依赖扩展。正如genpfault在回答中已经指出的,GLSL从一开始就不支持多维数组 扩展确实提供了您正在寻找的功能。它在版本4.3中被提升为OpenGL核心功能,因此从GLSL 4.30开始,您可以在不依赖扩展的情况下使用它。No
\Version
指令意味着禁止多维数组的\Version 100
:
:
相同类型的变量可以通过声明一个名称,后跟一个大小括号([])来聚合到数组中。数组大小必须是一个整型常量表达式(请参见第4.3.3节“整型常量表达式”)大于零。索引整型常量表达式大于或等于其声明大小的数组是非法的。索引整型常量表达式为负的数组也是非法的。在函数声明中声明为形式参数的数组必须指定大小。只能声明一维数组。所有基本类型和结构都可以形成阵列
如果使用#version 320 es
,则可以声明数组的数组:
:
同一类型的变量可以通过声明一个名称,后跟括号([])并包含可选大小来聚合到数组中。当存在时,数组大小必须是一个常量整数表达式(请参阅第4.3.3节“常量表达式”)大于零。size参数的类型可以是有符号或无符号整数,类型的选择不影响结果数组的类型。数组只有一个维度(在“[]”内有一个数字),但是,可以声明数组数组。任何类型都可以组成数组
无#version
指令意味着禁止使用多维数组的#version 100
:
:
相同类型的变量可以通过声明一个名称,后跟一个大小括号([])来聚合到数组中。数组大小必须是一个整型常量表达式(请参见第4.3.3节“整型常量表达式”)大于零。索引整型常量表达式大于或等于其声明大小的数组是非法的。索引整型常量表达式为负的数组也是非法的。在函数声明中声明为形式参数的数组必须指定大小。只能声明一维数组。所有基本类型和结构都可以形成阵列
如果使用#version 320 es
,则可以声明数组的数组:
:
同一类型的变量可以通过声明一个名称,后跟括号([])并包含可选大小来聚合到数组中。当存在时,数组大小必须是一个常量整数表达式(请参阅第4.3.3节“常量表达式”)大于零。size参数的类型可以是有符号或无符号整数,类型的选择不影响结果数组的类型。数组只有一个维度(在“[]”内有一个数字),但是,可以声明数组数组。任何类型都可以组成数组
也可以通过解决这个问题。也可以通过解决这个问题。