Non riesco davvero a decidere quale sia l'opzione migliore, vedo un sacco di down / upside ad entrambi gli approcci e in questo momento sono indeciso.
Ad esempio;
class DX11GBuffer
{
public:
DX11GBuffer(ID3D11DevicePtr device, ID3D11DeviceContextPtr context, D3D11_TEXTURE2D_DESC backbufferTextureDesc);
~DX11GBuffer();
void BindForGeometryStage(ID3D11DepthStencilViewPtr dsv);
// ...
}
"dsv" non è di proprietà dell'oggetto e quindi ha passato ogni frame, ma potrebbe anche essere passato come argomento nel costruttore e memorizzato, visto che si tratta di un puntatore intelligente.
Credo che quello che sto capendo sia che capisco che ci sono delle insidie nel mantenere troppi stati in un oggetto, ma anche nel passare così tanto come gli argomenti delle funzioni significano un sacco di ASCII. Allo stesso modo, la definizione di "oggetti argomento", raccolta di dati per funzioni, sembra aggiungere un po 'di overhead anche se deve essere applicata ovunque come regola empirica.
Suppongo di osservare alcune linee guida generali su quando passare come argomento rispetto a quando memorizzarlo come membro.