return check_extension(&Features::arb_explicit_uniform_location);
}
+bool LegacyConverter::supports_binding() const
+{
+ if(features.gl_api==OPENGL_ES2)
+ return check_version(Version(3, 10));
+ else
+ return check_version(Version(4, 20));
+}
+
void LegacyConverter::visit(VariableDeclaration &var)
{
if(var.layout)
else
++i;
}
+ else if(i->name=="binding" && !supports_binding())
+ {
+ const TypeDeclaration *type = var.type_declaration;
+ while(const BasicTypeDeclaration *basic = dynamic_cast<const BasicTypeDeclaration *>(type))
+ type = basic->base_type;
+ if(dynamic_cast<const ImageTypeDeclaration *>(type))
+ stage->texture_bindings[var.name] = i->value;
+
+ i = var.layout->qualifiers.erase(i);
+ }
else
++i;
}
{
if(i->name=="location" && !supports_interface_block_location())
i = iface.layout->qualifiers.erase(i);
+ else if(i->name=="binding" && !supports_binding())
+ {
+ stage->uniform_block_bindings[iface.block_name] = i->value;
+ i = iface.layout->qualifiers.erase(i);
+ }
else
++i;
}