def SetUniformi(self, varname, values): """ SetUniformi(varname, values) A uniform is a parameter for shading code. Set the parameters right after enabling the program. values should be a list of up to four ints ( which are converted to int). """ if not self._IsCompiled(): return # convert to floats values = [int(v) for v in values] # get loc loc = gla.glGetUniformLocationARB(self._programId, varname) # set values if len(values) == 1: gl.glUniform1i(loc, values[0]) elif len(values) == 2: gl.glUniform2i(loc, values[0], values[1]) elif len(values) == 3: gl.glUniform3i(loc, values[0], values[1], values[2]) elif len(values) == 4: gl.glUniform4i(loc, values[0], values[1], values[2], values[3])
def SetUniformf(self, varname, values): """ SetUniformf(varname, values) A uniform is a parameter for shading code. Set the parameters right after enabling the program. values should be a list of up to four floats ( which are converted to float32). """ if not self._IsCompiled(): return # convert to floats values = [float(v) for v in values] # get loc loc = gla.glGetUniformLocationARB(self._programId, varname) try: # set values if len(values) == 1: gl.glUniform1f(loc, values[0]) elif len(values) == 2: gl.glUniform2f(loc, values[0], values[1]) elif len(values) == 3: gl.glUniform3f(loc, values[0], values[1], values[2]) elif len(values) == 4: gl.glUniform4f(loc, values[0], values[1], values[2], values[3]) except: print 'Could not set uniform in shader. "%s": %s' % (varname, repr(values))
def SetUniformi(self, varname, values): """ SetUniformi(varname, values) A uniform is a parameter for shading code. Set the parameters right after enabling the program. values should be a list of up to four ints ( which are converted to int). """ if not self._IsCompiled(): return # convert to floats values = [int(v) for v in values] # get loc, encode varname to ensure it's in byte format # (pyopengl will support both bytes and str as input, but at the time # of writing this is not yet implemented.) loc = gla.glGetUniformLocationARB(self._programId, varname.encode('ascii')) # set values if len(values) == 1: gl.glUniform1i(loc, values[0]) elif len(values) == 2: gl.glUniform2i(loc, values[0], values[1]) elif len(values) == 3: gl.glUniform3i(loc, values[0], values[1], values[2]) elif len(values) == 4: gl.glUniform4i(loc, values[0], values[1], values[2], values[3])