Verweiszählung (Direct3D 10)
Direct3D 10-Set-Funktionen enthalten keinen Verweis auf ein geräte untergeordnetes Objekt. Dies bedeutet, dass jede Anwendung einen Verweis auf ein gerät-untergeordnetes Objekt enthalten muss, solange das Objekt an die Pipeline gebunden werden muss. Wenn der Verweiszähler eines Objekts auf 0 (null) fällt, wird das Objekt von der Pipeline ungebunden und zerstört. Diese Art der Verweisaufbewahrung wird auch als "weak-reference holding" bezeichnet, da jede Pipelinebindungsposition einen schwachen Verweis auf die Schnittstelle bzw. das Objekt enthält, die bzw. das an sie gebunden ist.
Beispiel:
pDevice->CreateRasterizerState( ..., &pRasterizerState );
pDevice->RSSetState( pRasterizerState );
pDevice->RSGetState( &pCurRasterizerState );
// pCurRasterizerState will be equal to pRasterizerState.
pCurRasterizerState->Release();
pRasterizerState->Release();
// Following the final release, the object is unbound.
pDevice->RSGetState( &pCurRasterizerState );
// pCurRasterizerState will be equal to NULL.
Unterschiede zwischen Direct3D 9 und Direct3D 10:
- In Direct3D 9 enthalten set-Funktionen einen Verweis auf die Geräteobjekte. In Direct3D 10 enthalten set-Funktionen keinen Verweis auf die geräte untergeordneten Objekte.