D3DPOOL_DEFAULT oder D3DPOOL_MANAGED?
-
Hallo,
ich bin gerade wieder ziemlich verwirrt, was denn jetzt besser ist, als Flags bei der Erstellung von Vertex- oder Indexbuffern.
Im Internet liest man beides, und die MSDN ist auch nicht aufschlussreich.
Also soll ich jetzt D3DPOOL_DEFAULT mit D3DUSAGE_WRITEONLY oder D3DPOOL_MANAGED nehmen?
-
Ich würd grundsätzlich immer den Default Pool verwenden. Von Ressourcen im Managed Pool werden im Prinzip einfach zusätzliche Kopien im RAM gehalten sodass die Runtime im Falle eines Reset nach einem Lost Device die Ressourcen selbst neu anlegen kann. Das spart zwar etwas Code aber verschwendet dafür Speicher.
-
Danke, für deine Antwort, aber wo spart D3DPOOL_MANAGED code?
Und kann man auch für Vertexbuffer problemlos D3DUSAGE_WRITEONLY benutzen, denn wirklich bei allen Beispielen wird das nur bei Indexbuffern benutzt, und bei Vertexbuffer wird einfach eine 0 angegeben, wieso?
-
skillermiller schrieb:
Danke, für deine Antwort, aber wo spart D3DPOOL_MANAGED code?
Du brauchst solche Ressourcen im Falle eines Lost Device nicht neu erzeugen, Ressourcen im Default Pool müssen dagegen zerstört und neu angelegt werden bevor das Device resettet werden kann.
skillermiller schrieb:
Und kann man auch für Vertexbuffer problemlos D3DUSAGE_WRITEONLY benutzen, denn wirklich bei allen Beispielen wird das nur bei Indexbuffern benutzt, und bei Vertexbuffer wird einfach eine 0 angegeben, wieso?
Dann sind die Beispiele Müll. Ein Buffer im Default Pool (egal ob Index- oder VertexBuffer) sollte unbedingt writeonly sein ansonsten kann sich das sehr negativ auf die Performance auswirken.