GLSL'de değişken dizinleri kullanarak sorun yaşıyorum. Foliolama GLSL kodu NVidia kartlarında iyi çalışıyor. Ama onun benim işimde değil, onun üzerinde çalışmıyorum. Bu, Shader-Derleyici Hatası yok. Bu program sadece glUseProgram
GLSL döngü dizisi dizini
adresinde çökertilmiştir.
Düzenleme:
uLightCount
ve uLightsPos
olan üniformalar:
#define MAX_LIGHTS 10
uniform float uLightCount;
uniform vec3 uLightsPos[MAX_LIGHTS];
Düzenleme 2:
#define i0 0
#define i1 1
#define i2 2
...
for(int i=0;i<int(uLightCount);++i)
{
vec3 lightPos;
if (i==i0)
lightPos = uLightsPos[i0];
if (i==i1)
lightPos = uLightsPos[i1];
....
}
: Garip bir çözüm bulduk
Bunun neden işe yaradığı hakkında bir fikrin var mı?
(sen? Genellikle bu çok eski OpenGL ve GLSL uygulamalarını son bootcamp sürücüsü ile –
destekleyen tümleşik kartlar Shader Model Intel kartları tarafından desteklenen ne olduğunu kontrol etmelidir olabilir kendisinin yazmak mümkün değildir MacBook Air'ımda) OpenGL 4.0 destekleniyor – Bastl
glGetError()? –