Nowadays this optimization will not be very efficient because almost never a user puts thousands of objects in edit mode.
But in the future the selection code may also be used in object mode (eg for snapping).
So to avoid using too much VRAM resources, it is good to avoid drawing all objects in the viewport.
To solve this the solution is to mark the culled objects and the ones that have already been drawn.
The BoundBox of each object is tested to see if it is within the threshold.
If it is outside the threshold, the object is marked as `is_culled` and it's not drawn.
Objects that have already been drawn are only drawn again if the viewport has changed.
Since the Select Engine does not have a dedicated depth texture, whenever a new object is "found" the depth of objects marked as `is_drawn` needs to be redrawn.