// DEFINE_BINDING(category, target, glGet binding) // texture objects DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_1D, GL_TEXTURE_BINDING_1D); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_2D, GL_TEXTURE_BINDING_2D); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_3D, GL_TEXTURE_BINDING_3D); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_BINDING_1D_ARRAY); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_BINDING_2D_ARRAY); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_RECTANGLE, GL_TEXTURE_BINDING_RECTANGLE); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_BINDING_CUBE_MAP); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BINDING_CUBE_MAP_ARRAY); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_BUFFER, GL_TEXTURE_BINDING_BUFFER); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_BINDING_2D_MULTISAMPLE); DEFINE_BINDING(GL_TEXTURE, GL_TEXTURE_2D_MULTISAMPLE_ARRAY, GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY); // buffer objects DEFINE_BINDING(GL_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_ARRAY_BUFFER, GL_ARRAY_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_ATOMIC_COUNTER_BUFFER, GL_ATOMIC_COUNTER_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_READ_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_COPY_WRITE_BUFFER, GL_COPY_WRITE_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_DRAW_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DISPATCH_INDIRECT_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_PACK_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_PIXEL_UNPACK_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_SHADER_STORAGE_BUFFER, GL_SHADER_STORAGE_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING); DEFINE_BINDING(GL_BUFFER, GL_UNIFORM_BUFFER, GL_UNIFORM_BUFFER_BINDING); // framebuffer object DEFINE_BINDING(GL_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER, GL_DRAW_FRAMEBUFFER_BINDING); DEFINE_BINDING(GL_FRAMEBUFFER, GL_READ_FRAMEBUFFER, GL_READ_FRAMEBUFFER_BINDING); // renderbuffer object DEFINE_BINDING(GL_RENDERBUFFER, GL_RENDERBUFFER, GL_RENDERBUFFER_BINDING); // sampler DEFINE_BINDING(GL_SAMPLER, GL_SAMPLER, GL_SAMPLER_BINDING); // vertex array object DEFINE_BINDING(GL_VERTEX_ARRAY, GL_VERTEX_ARRAY, GL_VERTEX_ARRAY_BINDING); // active texture (not really a binding, but seems useful) DEFINE_BINDING(GL_ACTIVE_TEXTURE, GL_ACTIVE_TEXTURE, GL_ACTIVE_TEXTURE); // program DEFINE_BINDING(GL_PROGRAM, GL_PROGRAM, GL_CURRENT_PROGRAM);