("", X, 1, "GL_FOG_SCALE_SGIX"), # 0x81FC
("", X, 1, "GL_FOG_SCALE_VALUE_SGIX"), # 0x81FD
("", X, 1, "GL_TEXT_FRAGMENT_SHADER_ATI"), # 0x8200
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"), # 0x8210
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"), # 0x8211
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"), # 0x8212
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"), # 0x8213
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"), # 0x8215
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"), # 0x8216
- ("", X, 1, "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"), # 0x8217
+ ("glGetFramebufferAttachmentParameter", E, 1, "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"), # 0x8210
+ ("glGetFramebufferAttachmentParameter", E, 1, "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"), # 0x8211
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"), # 0x8212
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"), # 0x8213
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"), # 0x8215
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"), # 0x8216
+ ("glGetFramebufferAttachmentParameter", I, 1, "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"), # 0x8217
("", X, 1, "GL_FRAMEBUFFER_DEFAULT"), # 0x8218
("", X, 1, "GL_FRAMEBUFFER_UNDEFINED"), # 0x8219
("", X, 1, "GL_DEPTH_STENCIL_ATTACHMENT"), # 0x821A
("", X, 1, "GL_STENCIL_BACK_REF"), # 0x8CA3
("", X, 1, "GL_STENCIL_BACK_VALUE_MASK"), # 0x8CA4
("", X, 1, "GL_STENCIL_BACK_WRITEMASK"), # 0x8CA5
- ("glGet", I, 1, "GL_FRAMEBUFFER_BINDING"), # 0x8CA6
+ ("glGet", I, 1, "GL_DRAW_FRAMEBUFFER_BINDING"), # 0x8CA6
("glGet", I, 1, "GL_RENDERBUFFER_BINDING"), # 0x8CA7
- ("", X, 1, "GL_READ_FRAMEBUFFER"), # 0x8CA8
- ("", X, 1, "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
+ ("", I, 1, "GL_READ_FRAMEBUFFER"), # 0x8CA8
+ ("", I, 1, "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
("glGet", I, 1, "GL_READ_FRAMEBUFFER_BINDING"), # 0x8CAA
("glGetRenderbufferParameter", I, 1, "GL_RENDERBUFFER_SAMPLES"), # 0x8CAB
("", X, 1, "GL_DEPTH_COMPONENT32F"), # 0x8CAC
('GL_TEXTURE_CUBE_MAP', 'GL_TEXTURE_BINDING_CUBE_MAP')
]
+framebuffer_targets = [
+ ('GL_DRAW_FRAMEBUFFER', 'GL_DRAW_FRAMEBUFFER_BINDING'),
+ ('GL_READ_FRAMEBUFFER', 'GL_READ_FRAMEBUFFER_BINDING'),
+]
class GetInflector:
'''Objects that describes how to inflect.'''
glGetShader = StateGetter('glGetShaderiv', {I: 'iv'})
glGetProgram = StateGetter('glGetProgram', {I: 'iv'})
glGetProgramARB = StateGetter('glGetProgram', {I: 'iv', F: 'fv', S: 'Stringv'}, 'ARB')
+glGetFramebufferAttachmentParameter = StateGetter('glGetFramebufferAttachmentParameter', {I: 'iv'})
class JsonWriter(Visitor):
self.dump_texenv_params()
self.dump_program_params()
self.dump_texture_parameters()
+ self.dump_framebuffer_parameters()
print ' json.endObject();'
print ' json.endMember(); // parameters'
print ' }'
print
+ def dump_framebuffer_parameters(self):
+ print ' {'
+ print ' GLint max_color_attachments = 0;'
+ print ' glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max_color_attachments);'
+ print ' GLint framebuffer;'
+ for target, binding in framebuffer_targets:
+ print ' // %s' % target
+ print ' framebuffer = 0;'
+ print ' glGetIntegerv(%s, &framebuffer);' % binding
+ print ' if (framebuffer) {'
+ print ' json.beginMember("%s");' % target
+ print ' json.beginObject();'
+ print ' for (GLint i = 0; i < max_color_attachments; ++i) {'
+ print ' GLint color_attachment = GL_COLOR_ATTACHMENT0 + i;'
+ self.dump_attachment_parameters(target, 'color_attachment')
+ print ' }'
+ self.dump_attachment_parameters(target, 'GL_DEPTH_ATTACHMENT')
+ self.dump_attachment_parameters(target, 'GL_STENCIL_ATTACHMENT')
+ #self.dump_attachment_parameters(target, 'GL_DEPTH_STENCIL_ATTACHMENT')
+ print ' json.endObject();'
+ print ' json.endMember(); // %s' % target
+ print ' }'
+ print
+ print ' }'
+ print
+
+ def dump_attachment_parameters(self, target, attachment):
+ print ' {'
+ print ' GLint object_type = GL_NONE;'
+ print ' glGetFramebufferAttachmentParameteriv(%s, %s, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &object_type);' % (target, attachment)
+ print ' if (object_type != GL_NONE) {'
+ print ' json.beginMember(enumToString(%s));' % attachment
+ print ' json.beginObject();'
+ self.dump_atoms(glGetFramebufferAttachmentParameter, target, attachment)
+ print ' json.endObject();'
+ print ' json.endMember(); // GL_x_ATTACHMENT'
+ print ' }'
+ print ' }'
+
def dump_atoms(self, getter, *args):
for function, type, count, name in parameters:
inflection = getter.inflector.radical + getter.suffix