const int NUM_IMPOSTER_VERTS = 6; /// Defines a vertex in an imposter billboard. struct ImposterVertex { D3DXVECTOR3 pos; D3DCOLOR colour; D3DXVECTOR2 uv; }; /// Represents an imposter. struct Imposter { // The vertices that comprise the imposter billboard. ImposterVertex verts[NUM_IMPOSTER_VERTS]; // Centre position of the imposter billboard. D3DXVECTOR3 centre; // Direction vector from imposter centre to camera position. D3DXVECTOR3 cameraDir; /// The offset of the imposter in the render texture. D3DXVECTOR2 uvOffset; // Set to ‘true’ when this imposter needs to be regenerated. bool requiresRegeneration; // The time the im poster was created. float startTime; // The time the imposter was last generated. float lastGeneratedTime; /// Set to 'true' when an imposter is active. bool active; /// Set to 'true' when an imposter is generated. bool generated; // The current imposter camera distance, computed each time imposters are rendered. // This is used for depth sorting alpha-blended imposters. float cameraDistSq; };