Hello there I was working on my shader classes and came across a mistake in the implementation of glProgramUniform3fv(int, int, FloatBuffer). After sifting for bugs in my own code I found that glProgramUniform3fv was dividing the buffer size by 9 when passing it off to the native function. So I checked glUniform3fv(int, Floatbuffer), which was working for me, and found out it was dividing the buffer size by 3. Small mistake but it would explain why I couldn't upload any data to the uniform when using glProgramUniform3fv.