我使用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