0
在我編碼的程序中,我必須生成多個光源並傳遞給着色器。由於這個數字是在着色器之外定義的,我通過uniform int
來傳遞它,並用它來聲明數組的大小。在基於統一int的GLSL中聲明數組
uniform int numLights;
uniform vec4 ambientColor;
uniform vec4 specularColor;
uniform vec3 diffuseColor[numLights];
uniform vec3 vLightPosition[numLights];
不過,我現在得到了很多的錯誤:
我不能這樣做呢?例如,我正在考慮改變預定義燈光的數量並忘記更新着色器的可能性。我試圖阻止這種事情發生。
[(OpenGL 3.1 - 4.2)Dynamic Uniform Arrays的可能重複?](http://stackoverflow.com/questions/9916103/opengl-3-1-4-2-dynamic-uniform-arrays) – Axalo
真的不要不知道你是如何通過這個問題展示的,@Axalo。 :S – pceccon
'uniform vec3 diffuseColor [numLights];'numLights必須是一個不是統一的常量。 – Axalo