void ShaderGLES2::bind_uniforms() { if (!uniforms_dirty) return; // regular uniforms const Map<uint32_t, Variant>::Element *E = uniform_defaults.front(); while (E) { int idx = E->key(); int location = version->uniform_location[idx]; if (location < 0) { E = E->next(); continue; } Variant v; v = E->value(); _set_uniform_variant(location, v); E = E->next(); } // camera uniforms const Map<uint32_t, CameraMatrix>::Element *C = uniform_cameras.front(); while (C) { int idx = C->key(); int location = version->uniform_location[idx]; if (location < 0) { C = C->next(); continue; } glUniformMatrix4fv(location, 1, GL_FALSE, &(C->get().matrix[0][0])); C = C->next(); } uniforms_dirty = false; }
void ShaderGLES2::bind_uniforms() { if (!uniforms_dirty) { return; }; // upload default uniforms const Map<uint32_t,Variant>::Element *E =uniform_defaults.front(); while(E) { int idx=E->key(); int location=version->uniform_location[idx]; if (location<0) { E=E->next(); continue; } const Variant &v=E->value(); _set_uniform_variant(location, v); //print_line("uniform "+itos(location)+" value "+v+ " type "+Variant::get_type_name(v.get_type())); E=E->next(); }; const Map<uint32_t,CameraMatrix>::Element* C = uniform_cameras.front(); while (C) { int location = version->uniform_location[C->key()]; if (location<0) { C=C->next(); continue; } glUniformMatrix4fv(location,1,false,&(C->get().matrix[0][0])); C = C->next(); }; uniforms_dirty = false; };