SurfaceCache Klassenreferenz

Der SurfaceCache ist ein Container fuer alle Surfaces, die in einem Frame gerendert werden müssen. Die Anzahl der Surfaces im Cache ist auf MAX_SURFACES begrenzt. Damit der Cache nicht ueberlaeuft, muessen ungenutzte Eintraege entfernt werden. Die Strategie sieht wie folgt aus: Jedes Surfaceobjekt besitzt einen Zaehler der in der Methode refresh() inkrementiert wird. Erreicht der Zaehler eine bestimmte Grenze (MAX_DROP), wird das Objekt aus dem Cache entfernt. Typ. wird refresh() bei jedem Frame einmal aufgerufen. Jeder Aufruf der Methode getSurface() setzt den Zaehler auf 0 zurueck. Wird ein Surfaceobjekt immer wieder fuer ein Frame verwendet, kann der Zaehler nicht die Grenze erreichen und wird damit auch nicht aus dem Cache entfernt. Diese Strategie minmiert dynamisch den Speicherbedarf. Nachteil: Bewegt sich die Kamera uber eine laengere Zeit nicht, werden alle nichtgenutzten Surfaces aus dem Cache entfernt. Wird nun die Kamera position veraendert (z.B. durch Drehen) muessen alle neuen Surfaces in den Cache geladen werden. Das macht sich durch einen Einbruch in der Framerate bemerkbar. Besser: Den Fuellstand des Caches immer voll ausnutzen. Erst wenn mehr 100% erreicht wurde, nicht genutzte Surfaces entfernen. Mehr ...

#include <SurfaceCache.h>

Aufstellung aller Elemente

Öffentliche Methoden

 ~SurfaceCache (void)
 Destruktor.
void refresh ()
 refresh
long addSurface (Texture &texture)
 addSurface
long addSurface (Texture &texture, LightMap *lightMap, BYTE intensity)
 addSurface
long updateSurface (long sid, Texture &texture)
 updateSurface
long updateSurface (long sid, Texture &texture, LightMap *lightMap, BYTE intensity)
 updateSurface
SurfacegetSurface (long sid)
 getSurface
int getCount (void)
 getCount

Öffentliche, statische Methoden

static SurfaceCachegetInstance ()
 Liefert die Singleton-Instanz.

Geschützte Methoden

 SurfaceCache ()
 Konstruktor.

Private Attribute

int m_usedCounter
long m_sid
Surfacem_surfaces [MAX_SURFACES]
BYTE m_rgbIntensity [256][256]

Statische private Attribute

static SurfaceCache_instance = 0


Ausführliche Beschreibung

Der SurfaceCache ist ein Container fuer alle Surfaces, die in einem Frame gerendert werden müssen. Die Anzahl der Surfaces im Cache ist auf MAX_SURFACES begrenzt. Damit der Cache nicht ueberlaeuft, muessen ungenutzte Eintraege entfernt werden. Die Strategie sieht wie folgt aus: Jedes Surfaceobjekt besitzt einen Zaehler der in der Methode refresh() inkrementiert wird. Erreicht der Zaehler eine bestimmte Grenze (MAX_DROP), wird das Objekt aus dem Cache entfernt. Typ. wird refresh() bei jedem Frame einmal aufgerufen. Jeder Aufruf der Methode getSurface() setzt den Zaehler auf 0 zurueck. Wird ein Surfaceobjekt immer wieder fuer ein Frame verwendet, kann der Zaehler nicht die Grenze erreichen und wird damit auch nicht aus dem Cache entfernt. Diese Strategie minmiert dynamisch den Speicherbedarf. Nachteil: Bewegt sich die Kamera uber eine laengere Zeit nicht, werden alle nichtgenutzten Surfaces aus dem Cache entfernt. Wird nun die Kamera position veraendert (z.B. durch Drehen) muessen alle neuen Surfaces in den Cache geladen werden. Das macht sich durch einen Einbruch in der Framerate bemerkbar. Besser: Den Fuellstand des Caches immer voll ausnutzen. Erst wenn mehr 100% erreicht wurde, nicht genutzte Surfaces entfernen.

Beschreibung der Konstruktoren und Destruktoren

SurfaceCache::SurfaceCache ( void   )  [protected]

Konstruktor.

SurfaceCache::~SurfaceCache ( void   ) 

Destruktor.


Dokumentation der Elementfunktionen

SurfaceCache * SurfaceCache::getInstance (  )  [static]

Liefert die Singleton-Instanz.

Rückgabe:
Pointer auf die Instanz

void SurfaceCache::refresh (  ) 

refresh

long SurfaceCache::addSurface ( Texture texture  ) 

addSurface

Parameter:
texture Textur
Rückgabe:
sid, -1, -2

long SurfaceCache::addSurface ( Texture texture,
LightMap lightMap,
BYTE  intensity 
)

addSurface

Parameter:
texture Textur
lightMap 
intensity 
Rückgabe:
sid, -1, -2

long SurfaceCache::updateSurface ( long  sid,
Texture texture 
)

updateSurface

Parameter:
sid 
texture Textur
Rückgabe:
sid, -1, -2

long SurfaceCache::updateSurface ( long  sid,
Texture texture,
LightMap lightMap,
BYTE  intensity 
)

updateSurface

Parameter:
sid 
texture Textur
lightMap 
intensity 
Rückgabe:
sid, -1, -2

Surface * SurfaceCache::getSurface ( long  sid  ) 

getSurface

Parameter:
sid Surface ID
Rückgabe:
Pointer auf Surface, oder NULL

int SurfaceCache::getCount ( void   ) 

getCount

Rückgabe:
Anzahl Surfaces


Dokumentation der Datenelemente

SurfaceCache * SurfaceCache::_instance = 0 [static, private]

long SurfaceCache::m_sid [private]

Surface* SurfaceCache::m_surfaces[MAX_SURFACES] [private]

BYTE SurfaceCache::m_rgbIntensity[256][256] [private]


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:

Generated on Sun Nov 1 16:26:43 2009 for engine3d by doxygen 1.5.5