encapsulated open-gl