New answers tagged objects
I'd highly suggest you look into implementing a Quadtree. This would allow you to run a query to fetch all the objects in your viewport, as opposed to checking every single entity before a draw. Have a look at the following sample query code: List<Entity> entitiesOnScreen; entitiesOnScreen = QuadTree.GetObjects(Viewport.Rectangle); foreach ...
1) You don't need to calculate the visible objects in a single frame, you may use a bit bigger viewport, and calcultate only 500 objects per frame, if you have 20000 objects and your framerate is 50fps, in 40 frames you will have the right list, and it will take 0.8 secs 2) if your objects are not very complex or are static, sometimes is faster to put them ...
You would likely have to switch over to the 3D (lower level) rendering and then use instancing which offloads most of the work to the GPU. http://www.float4x4.net/index.php/2011/07/hardware-instancing-for-pc-in-xna-4-with-textures/
Top 50 recent answers are included