def _update(self): # Check active status (mandatory) if not self._active: raise RuntimeError("Uniform variable is not active") # WARNING : Uniform are supposed to keep their value between program # activation/deactivation (from the GL documentation). It has # been tested on some machines but if it is not the case on # every machine, we can expect nasty bugs from this early # return # Matrices (need a transpose argument) if self._gtype in (gl.GL_FLOAT_MAT2, gl.GL_FLOAT_MAT3, gl.GL_FLOAT_MAT4): # OpenGL ES 2.0 does not support transpose transpose = False self._ufunction(self._handle, 1, transpose, self._data) # Textures (need to get texture count) elif self._gtype in (gl.GL_SAMPLER_1D, gl.GL_SAMPLER_2D, gl.GL_SAMPLER_CUBE): # texture = self.data log.debug("GPU: Activactin texture %d" % self._texture_unit) # gl.glActiveTexture(gl.GL_TEXTURE0 + self._unit) # gl.glBindTexture(texture.target, texture.handle) gl.glUniform1i(self._handle, self._texture_unit) # Regular uniform else: self._ufunction(self._handle, 1, self._data)