我使用THREE.js和WebGL着色器。我想在片段着色器中声明浮点数的数组。该GLSL常数int数组的定义如下:WebGL着色器中的const float数组
#define KERNEL_LENGTH 9
const float kernel[KERNEL_LENGTH] = {
1.0/16.0, 2.0/16.0, 1.0/16.0,
2.0/16.0, 4.0/16.0, 2.0/16.0,
1.0/16.0, 2.0/16.0, 1.0/16.0
};
我也试过用:
#define KERNEL_LENGTH 9
const float kernel[KERNEL_LENGTH] = float[KERNEL_LENGTH](
1.0/16.0, 2.0/16.0, 1.0/16.0,
2.0/16.0, 4.0/16.0, 2.0/16.0,
1.0/16.0, 2.0/16.0, 1.0/16.0
);
但随着WebGL的,他们都没有工作。错误信息:
ERROR: 0:44: 'kernel' : arrays may not be declared constant since they cannot be initialized ERROR: 0:44: '=' : syntax error
那么应该如何定义一个const float数组?
我不想将它们传递到着色器,因为该值始终不变。 – Ovilia 2013-03-07 05:10:32
一个小秘密:“常量”值始终作为制服传递给GPU – bjorke 2013-03-07 05:12:19
您确定WebGL中没有常量变量吗? – Ovilia 2013-03-07 05:17:22