002
28.04.2006, 13:47 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat von ao: |
Du verwaltest ein Array (in C++ natürlich vector<> oder was andere Geeignetes), reservierst beim Laden der Szene gleich Platz für 10.000 Cubes oder so und gibst diese einen nach dem anderen an die Spielroutinen heraus. Das müsste ziemlich schnell gehen, weil du nur Referenzen auf bereits existierende Objekte verteilen musst.
|
Hier sollte man Vorsicht walten lassen: STL Container zeichnen sich durch Blindes kopieren aus. Dh wenn Du einen Cube in einen Vector tust, dann wird nicht etwa der Cube, sonder ein Clone davon in den vector getan. Abhilfe schaffen hier vectoren auf (Smart)Pointer basis, aber dann sollte man noch den Overhead durch die Smartpointer mit einrechnen. Möglicherweise ist man also mit einem STL Container nicht ganz so gut bedient.
Zitat von ao: |
Natürlich musst du dir merken, welche Cubes benutzt werden und welche nicht, aber das müsste gut automatisierbar sein, indem die Objekte, die die Cubes anfordern und erhalten, gezwungen werden, diese in ihren Destruktoren wieder loszulassen -> Das schreit nach Basisklasse mit virtuellem Destruktor.
|
Wer sich Gedanken macht, daß das dynamische Holen von Speicher vielleicht teuer sei, der müsste theoretisch auch besorgt sein, daß virtuelle Methoden auch geringfüfgig teurer sind als die mit früher Bindung.
Ich würde generell bei diesem programm erstmal schreiben und mich erst zum Schluß um diese Optimierungsfragen kümmern.
Zitat: |
Übrigens, ist mit "cube" gemeint, dass die Objekte tatsächlich würfelförmig sind (90 Grad Innenwinkel, Kanten gleich lang)? Dann brauchst du nicht alle 8 Ecken zu speichern, mit vieren ist die Beschreibung schon eindeutig.
|
Gute Idee. Hier hätte ich aber prompt auf nur drei Ecken getippt. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |