PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vorgehensweise beim rendern in 3D Anwendungen


Gast
2006-08-08, 18:08:06
hi,

ich wollte mal wissen wie man beim rendern vorgeht. ich meine man lädt die modeldaten und level daten und rendert sie. in meinem jetzigen memory spiel habe ich alles in einen aufgeblähten struct gepackt. das problem ist das spiel dann übersichtlich zu erweitern.

daher dachte ich mir ich bastel mir einen Struct für das/die modelle und lade sie dort rein.

zum rendern verwende ich dann einen struct für die objekte die gerendert werden müssen. sachen die nicht mehr gerendert werden, würde ich dann löschen und neue sachen hinzufügen wenn nötig. das heisst zur laufzeit die arraygröße ändern.

im fall vom memory spiel würde ich das model für die karten nur einmal im modelarray stehen haben. der objektarray der 16 einträge für 16 spielkarten hat zieht sich die koordinaten vom modelarray. jetzt habe ich gelesen das es wohl nicht so einfach ist zur laufzeit ohne großen aufwand neue einträge hinzuzufügen geschweige zu löschen. es würde am ende wohl auf die geschwindigkeit gehen. beim memory spiel wenn die karten wegfallen sicherlich nicht relevant, aber man will ja was für die zukunft machen.

beim lesen bin ich auf std::vector gestossen, es ermöglicht mir das löschen und hinzufügen von elementen mit geringem aufwand. das heisst wenn auf dem spielfeld dann nur noch 2 karten sind, sind im vector auch nur noch 2 einträge.

struct VERTEX { float x, y, z, u, v; };
struct TRIANGLE { VERTEX vertex[3]; int textureid; };
struct LEVEL{ int numtriangles; TRIANGLE* triangle; };

vector<LEVEL>LevelArray;

ist das so anwendbar oder wie wird das gemacht das man zur laufzweit mal mehr oder weniger objekte je nach ereignis rendert? oder wird der objektarray zubeginn mit der anzahl von objekten gefüllt die gerendert werden könnten und nur eine bool variable festlegt ob das objekt gezeichnet wird oder nicht. die mapdateien und die darin enthaltenen objekte und die anzahl der festgelegten spieler würde es ermöglichen, wäre in meinen augen aber nicht sinnvoll. ich müsste einen array mit z.b. 100 elemten durchgehen wenn es auch ein vector mit 75 sein könnte weil objekte mittlerweile zerstört, weggefallen oder spieler das spiel verlassen haben.