glGetProgram = StateGetter('glGetProgram', {I: 'iv'})
glGetProgramARB = StateGetter('glGetProgram', {I: 'iv', F: 'fv', S: 'Stringv'}, 'ARB')
glGetFramebufferAttachmentParameter = StateGetter('glGetFramebufferAttachmentParameter', {I: 'iv'})
+glGetSamplerParameter = StateGetter('glGetSamplerParameter', {I: 'iv', F: 'fv'})
class JsonWriter(Visitor):
print ' }'
print
+ def dump_sampler_params(self):
+ print ' // GL_SAMPLER_BINDING'
+ print ' if (context.ARB_sampler_objects) {'
+ print ' GLint sampler_binding = 0;'
+ print ' glGetIntegerv(GL_SAMPLER_BINDING, &sampler_binding);'
+ print ' json.beginMember("GL_SAMPLER_BINDING");'
+ print ' json.writeInt(sampler_binding);'
+ print ' json.endMember();'
+ print ' if (sampler_binding) {'
+ print ' json.beginMember("GL_SAMPLER");'
+ print ' json.beginObject();'
+ for _, _, name in glGetSamplerParameter.iter():
+ self.dump_atom(glGetSamplerParameter, 'sampler_binding', name)
+ print ' json.endObject();'
+ print ' json.endMember(); // GL_SAMPLER'
+ print ' }'
+ print ' }'
+
def texenv_param_target(self, name):
if name == 'GL_TEXTURE_LOD_BIAS':
return 'GL_TEXTURE_FILTER_CONTROL'
for target, binding in texture_targets:
print ' dumpTextureTargetParameters(json, context, %s, %s);' % (target, binding)
print ' if (unit < max_texture_coords) {'
+ self.dump_sampler_params()
self.dump_texenv_params()
print ' }'
print ' json.endObject();'
def dump_atoms(self, getter, *args):
for _, _, name in getter.iter():
- self.dump_atom(getter, *(args + (name,)))
+ self.dump_atom(getter, *(args + (name,)))
def dump_atom(self, getter, *args):
name = args[-1]
- # Avoid crash on MacOSX
- # XXX: The right fix would be to look at the support extensions..
- import platform
- if name == 'GL_SAMPLER_BINDING' and platform.system() == 'Darwin':
- return
-
print ' // %s' % name
print ' {'
print ' flushErrors();'