Bindable uniforms and uniform uploading with ARB

I need to do two things, possible with GLSL, but not precompiled ARB asm shaders:

  1. bindable uniforms:
    glUniformBufferEXT is only for GLSL, is there an alternative for ARB?

  2. uploading a range of program-local uniform data
    Right now, what I have is this laggy implementation:

inline void __setUniforms(int target, int start, int numFloats,const float* data){
	float tmp[4]={0,0,0,0};
	float* p=&tmp;
	while(numFloats--)*p++ = *data++;

void ilSetUniformsPS(int start,int numBytes,float* data){

glProgramParametersXXX is marked as global, and is said in the specs to work only with GL_VERTEX_PROGRAM_NV

Ah, found the answer for bindable uniforms:

I swear I searched a lot beforehand >_<
Still, the second problem remains

That extension allows for batch uploading of parameters (both env and local). We use it on OS X 10.4.8 and higher, it makes a lot of difference especially on multi threaded drivers which do command queuing - far fewer individual calls to queue and dequeue.

Thanks :slight_smile: