Erstellungsweise und Lebensdauer von CreateXXX() Objekten...
-
Hey!
Ich rede von DirectX... Werden die Objekte per new angelegt?
Wie lange leben diese Objekte?Zum Beispiel:
IDirectSoundBuffer* ResourceManager::loadSound(std::string fileName) { ... IDirectSoundBuffer *soundBuffer; soundInterface->CreateSoundBuffer(&soundBufferDescription, &soundBuffer, 0); ... return soundBuffer; }Verwenden tue ich das dann so:
IDirectSoundBuffer* test = resourceManager->loadSound("test.wav"); test->SetCurrentPosition(0); test->Play(0, 0, 0);Ist das so OK? Aber es müsste doch intern per new angelegt werden, richtig? Und ich muss mich dann nicht weiter um ein delete kümmern? Einfach test->Release() schreiben, richtig?
Danke!
MfG
-
Das kann dir egal wie das intern angelegt wird. Du musst aber nicht nur Release aufrufen, sondern auch alles Referenzen auf das Objekt beseitigen, ist doch in der Doku beschrieben. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
TGGCs Satz nochmal in vier Buchstaben zusammengefasst: RTFM.
-
Okok, eine Frage noch, möchte dafür keinen extra thread aufmachen:
Gibt es eine Möglichkeit, die Matrix aller Sprites auf einmal zu ändern? Für jedes Sprite SetTransform() aufrufen wäre blöd, weil ich einen SceneManager schreiben möchte, bei dem die "TransformationNode" die Matrix aller nachfolgend gezeichneten Sprites verändern kann, vergleichbar mit der Worldmatrix für 3D Objekte.
MfG
-
Was für Sprites? Sprichst du von den D3DX Sachen?
Programmier dir das doch einfach selbst, dann kannst du ganz genau festlegen wann wo welche Matrix verwendet wird.