Rendering crowds
Rendering an individual character onscreen can be a costly exercise in and of itself, so the idea of rendering every member of a large crowd can sound positively insane in terms of overall performance.
The use of virtual billboards to "copy and paste" members of a crowd repeatedly throughout a space is one quite common way to reduce such an overhead.
Getting ready
This example relies upon the GeometricBuffer
classes described in Chapter 3's procedural modeling recipes, but they are equally applicable to any method of holding and rendering meshes.
How to do it...
To render a crowd:
1. In your game, create the instance-level variables to hold the details for the camera, models, effects, and render targets that are going to be needed for rendering:
Vector3 cameraPosition = new Vector3(0, 2, 2); Vector3 cameraTarget = Vector3.Zero; Matrix world; Matrix view; Matrix projection; BasicEffect personEffect; AlphaTestEffect billboardEffect; GeometricBuffer<VertexPositionNormalTexture...