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 thresholhe solution was to create an array with only objects that are detected within the selection area.
If the selection operator is modal, objects already detected are not removed from the array until view3d is moved or orbited.
If it is insideTo detect the thresholdobject, the object is marked as `is_culled` and it's drawnits BoundBox is tested.
Objects that have already been drawn are only drawn again if the viewport has changedSince the Select Engine does not have a dedicated depth texture, whenever a new object is "found" the depth of the objects in the array already drawn is redrawn.
Since the Select Engine does not have a dedicOne thing to note is that an array (of `struct SelectObject`s) is created depth texture,with all objects in context. whenever a new object is "found" the depth of objects marked as `is_drawn` needs to be redrawnThis can be changed later.