uh you must have missed my edit (read my above post i edited)
also just read this:
“If the number of values specified by count would exceed the declared extent of the indicated uniform variable, a GL_INVALID_VALUE error is generated and the specified uniform variable will remain unchanged.”
but if i set a count of 2, and in my shader the size is 4 it still fails?
ps. i get the handle to the uniform param like this:
I’m willing to bet the shader compiler sees that you are not accessing the other matrices and is optimizing them out. From my understanding of the spec, if one array variable is used, they all have to be valid. This may be a bug. What card/driver?
Uniform xxx …
When loading N elements starting at an arbitrary position k in a uniform declared
as an array, elements k through k + N − 1 in the array will be replaced
with the new values. Values for any array element that exceeds the highest array
element index used, as reported by GetActiveUniform, will be ignored by the GL.
So it looks like a bug (or most likely ATI have not implemented the GL2.0 spec yet.)