如何在GLSL(OpenGL ES 2.0)中定义常量数组?

问题描述 投票:0回答:2

我只想存储每个片段计算所需的权重数组。

这个:

float weights[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);

只是抛出这个:

ERROR: 0:30: ']' : syntax error syntax error
ERROR: 0:30: ';' : syntax error syntax error
iphone opengl-es glsl fragment-shader
2个回答
33
投票

摘自 OpenGL ES SL 1.0 规范,段落

4.1.9 Arrays
(第 24 页):

没有在着色器内声明时初始化数组的机制。

请注意,这已被有意省略。根据这篇文章,OpenGL ES 2 的 OpenGL ES SL 版本基于 OpenGL SL 1.2。同一段(第 20 页)包含:

数组可以具有由数组构造函数形成的初始值设定项:

float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);
float a[5] = float[](3.4, 4.2, 5.0, 5.2, 1.1);  // same thing

7
投票
precision highp float;

const float a[5] = float[5](3.4, 4.2, 5.0, 5.2, 1.1);

它适用于 Android KitKat 版本 (OpenGL ES 2.0)。

© www.soinside.com 2019 - 2024. All rights reserved.