@@ -20,53 +20,53 @@ class Uniform:
2020
2121 _uniform_setters = {
2222 # uniform type: (gl_type, setter, length, count)
23- gl .GL_INT : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
24- gl .GL_INT_VEC2 : (gl .GLint , gl .glUniform2iv , 2 , 1 ),
25- gl .GL_INT_VEC3 : (gl .GLint , gl .glUniform3iv , 3 , 1 ),
26- gl .GL_INT_VEC4 : (gl .GLint , gl .glUniform4iv , 4 , 1 ),
23+ gl .GL_INT : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
24+ gl .GL_INT_VEC2 : (gl .GLint , gl .glProgramUniform2iv , 2 , 1 ),
25+ gl .GL_INT_VEC3 : (gl .GLint , gl .glProgramUniform3iv , 3 , 1 ),
26+ gl .GL_INT_VEC4 : (gl .GLint , gl .glProgramUniform4iv , 4 , 1 ),
2727 gl .GL_BOOL : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
28- gl .GL_BOOL_VEC2 : (gl .GLint , gl .glUniform2iv , 2 , 1 ),
29- gl .GL_BOOL_VEC3 : (gl .GLint , gl .glUniform3iv , 3 , 1 ),
30- gl .GL_BOOL_VEC4 : (gl .GLint , gl .glUniform4iv , 4 , 1 ),
31- gl .GL_FLOAT : (gl .GLfloat , gl .glUniform1fv , 1 , 1 ),
32- gl .GL_FLOAT_VEC2 : (gl .GLfloat , gl .glUniform2fv , 2 , 1 ),
33- gl .GL_FLOAT_VEC3 : (gl .GLfloat , gl .glUniform3fv , 3 , 1 ),
34- gl .GL_FLOAT_VEC4 : (gl .GLfloat , gl .glUniform4fv , 4 , 1 ),
28+ gl .GL_BOOL_VEC2 : (gl .GLint , gl .glProgramUniform2iv , 2 , 1 ),
29+ gl .GL_BOOL_VEC3 : (gl .GLint , gl .glProgramUniform3iv , 3 , 1 ),
30+ gl .GL_BOOL_VEC4 : (gl .GLint , gl .glProgramUniform4iv , 4 , 1 ),
31+ gl .GL_FLOAT : (gl .GLfloat , gl .glProgramUniform1fv , 1 , 1 ),
32+ gl .GL_FLOAT_VEC2 : (gl .GLfloat , gl .glProgramUniform2fv , 2 , 1 ),
33+ gl .GL_FLOAT_VEC3 : (gl .GLfloat , gl .glProgramUniform3fv , 3 , 1 ),
34+ gl .GL_FLOAT_VEC4 : (gl .GLfloat , gl .glProgramUniform4fv , 4 , 1 ),
3535 # 1D Samplers
36- gl .GL_SAMPLER_1D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
37- gl .GL_INT_SAMPLER_1D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
38- gl .GL_UNSIGNED_INT_SAMPLER_1D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
39- gl .GL_TEXTURE_1D_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
36+ gl .GL_SAMPLER_1D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
37+ gl .GL_INT_SAMPLER_1D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
38+ gl .GL_UNSIGNED_INT_SAMPLER_1D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
39+ gl .GL_TEXTURE_1D_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
4040 # 2D samplers
41- gl .GL_SAMPLER_2D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
42- gl .GL_SAMPLER_2D_MULTISAMPLE : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
43- gl .GL_INT_SAMPLER_2D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
44- gl .GL_UNSIGNED_INT_SAMPLER_2D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
45- gl .GL_TEXTURE_2D_MULTISAMPLE : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
41+ gl .GL_SAMPLER_2D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
42+ gl .GL_SAMPLER_2D_MULTISAMPLE : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
43+ gl .GL_INT_SAMPLER_2D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
44+ gl .GL_UNSIGNED_INT_SAMPLER_2D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
45+ gl .GL_TEXTURE_2D_MULTISAMPLE : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
4646 # Array
47- gl .GL_SAMPLER_2D_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
48- gl .GL_TEXTURE_2D_MULTISAMPLE_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
47+ gl .GL_SAMPLER_2D_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
48+ gl .GL_TEXTURE_2D_MULTISAMPLE_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
4949 # 3D
50- gl .GL_SAMPLER_3D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
50+ gl .GL_SAMPLER_3D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
5151 # Cube
52- gl .GL_SAMPLER_CUBE : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
53- gl .GL_TEXTURE_CUBE_MAP_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
52+ gl .GL_SAMPLER_CUBE : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
53+ gl .GL_TEXTURE_CUBE_MAP_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
5454 # Matrices
55- gl .GL_FLOAT_MAT2 : (gl .GLfloat , gl .glUniformMatrix2fv , 4 , 1 ),
56- gl .GL_FLOAT_MAT3 : (gl .GLfloat , gl .glUniformMatrix3fv , 9 , 1 ),
57- gl .GL_FLOAT_MAT4 : (gl .GLfloat , gl .glUniformMatrix4fv , 16 , 1 ),
55+ gl .GL_FLOAT_MAT2 : (gl .GLfloat , gl .glProgramUniformMatrix2fv , 4 , 1 ),
56+ gl .GL_FLOAT_MAT3 : (gl .GLfloat , gl .glProgramUniformMatrix3fv , 9 , 1 ),
57+ gl .GL_FLOAT_MAT4 : (gl .GLfloat , gl .glProgramUniformMatrix4fv , 16 , 1 ),
5858 # Image (compute shader)
59- gl .GL_IMAGE_1D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
60- gl .GL_IMAGE_2D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
61- gl .GL_IMAGE_2D_RECT : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
62- gl .GL_IMAGE_3D : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
63- gl .GL_IMAGE_CUBE : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
64- gl .GL_IMAGE_1D_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
65- gl .GL_IMAGE_2D_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
66- gl .GL_IMAGE_CUBE_MAP_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
67- gl .GL_IMAGE_2D_MULTISAMPLE : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
68- gl .GL_IMAGE_2D_MULTISAMPLE_ARRAY : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
69- gl .GL_IMAGE_BUFFER : (gl .GLint , gl .glUniform1iv , 1 , 1 ),
59+ gl .GL_IMAGE_1D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
60+ gl .GL_IMAGE_2D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
61+ gl .GL_IMAGE_2D_RECT : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
62+ gl .GL_IMAGE_3D : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
63+ gl .GL_IMAGE_CUBE : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
64+ gl .GL_IMAGE_1D_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
65+ gl .GL_IMAGE_2D_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
66+ gl .GL_IMAGE_CUBE_MAP_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
67+ gl .GL_IMAGE_2D_MULTISAMPLE : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
68+ gl .GL_IMAGE_2D_MULTISAMPLE_ARRAY : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
69+ gl .GL_IMAGE_BUFFER : (gl .GLint , gl .glProgramUniform1iv , 1 , 1 ),
7070
7171 # TODO: test/implement these:
7272 # gl.GL_FLOAT_MAT2x3: glUniformMatrix2x3fv,
@@ -137,21 +137,18 @@ def _setup_getters_and_setters(self):
137137 self ._program_id , self ._location , gl_getter , c_array , length
138138 )
139139 self .setter = Uniform ._create_setter_func (
140- self ._location , gl_setter , c_array , length , self ._array_length , count , ptr , is_matrix
140+ self ._program_id , self . _location , gl_setter , c_array , length , self ._array_length , count , ptr , is_matrix
141141 )
142142
143143 @staticmethod
144144 def _create_getter_func (program_id , location , gl_getter , c_array , length ):
145145 """ Create a function for getting/setting OpenGL data. """
146146 if length == 1 :
147-
148147 def getter_func ():
149148 """ Get single-element OpenGL uniform data. """
150149 gl_getter (program_id , location , c_array )
151150 return c_array [0 ]
152-
153151 else :
154-
155152 def getter_func ():
156153 """ Get list of OpenGL uniform data. """
157154 gl_getter (program_id , location , c_array )
@@ -161,30 +158,26 @@ def getter_func():
161158
162159 @staticmethod
163160 def _create_setter_func (
164- location , gl_setter , c_array , length , array_length , count , ptr , is_matrix
161+ program_id , location , gl_setter , c_array , length , array_length , count , ptr , is_matrix
165162 ):
166163 """ Create setters for OpenGL data. """
167164 if is_matrix :
168-
169165 def setter_func (value ): # type: ignore #conditional function variants must have identical signature
170166 """ Set OpenGL matrix uniform data. """
171167 c_array [:] = value
172- gl_setter (location , array_length , gl .GL_FALSE , ptr )
168+ gl_setter (program_id , location , array_length , gl .GL_FALSE , ptr )
173169
174170 elif length == 1 and count == 1 :
175-
176171 def setter_func (value ): # type: ignore #conditional function variants must have identical signature
177172 """ Set OpenGL uniform data value. """
178173 c_array [0 ] = value
179- gl_setter (location , array_length , ptr )
174+ gl_setter (program_id , location , array_length , ptr )
180175
181176 elif length > 1 and count == 1 :
182-
183177 def setter_func (values ): # type: ignore #conditional function variants must have identical signature
184178 """ Set list of OpenGL uniform data. """
185179 c_array [:] = values
186- gl_setter (location , array_length , ptr )
187-
180+ gl_setter (program_id , location , array_length , ptr )
188181 else :
189182 raise NotImplementedError ("Uniform type not yet supported." )
190183
0 commit comments