Ciao.
Ho una serie di strutture vertex che ereditano una dall altra partendo da una struttura base VertexBase.
Ho una serie di classi materiale che ereditano una dall altra partendo da una classe base CMaterialBase.
Ogni classe Cmaterial utilizza una classe vertex diversa , derivante da VertexBase.
A seconda del tipo di struttura usata la classe materiale ha diversi algoritmi che cambiano per creare ,riempire e modificare un buffer e fare altre cose.
Posso separare questi algoritmi dalla struttura della classe materiale ?
utilizzando l'ereditarietà derivo ad es da fillvertex e implemento l'algoritmo specifico .
ho pero vari "pezzi" di una funzione da separare , ad es:
pensavo di spezzettare la funzione principale in sottofunzioni da implementare diversamente a seconda del tipo di materialecodice:UINT stride = sizeof( SimpleVertexText ); UINT offset = 0; m_pDevice->IASetVertexBuffers( 0, 1, &m_pVertexBuffer, &stride, &offset ); m_pDevice->IASetIndexBuffer( m_pIndexBuffer, DXGI_FORMAT_R32_UINT, 0 ); m_pWorldVariable->SetMatrix( ( float* )&mWorld ); m_pViewVariable->SetMatrix( ( float* )&mView ); m_pProjVariable->SetMatrix( ( float* )&mProjection ); //*************************qui devo poter settare altre variabili m_pDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST ); int m_nIndexCount = m_pSubMeshData->GetIndexCount(); D3D10_TECHNIQUE_DESC techDesc; m_pTechniqueRender->GetDesc( &techDesc ); /***************************qui devo poter aggiungere altre cose for( UINT p = 0; p < techDesc.Passes; ++p ) { m_pTechniqueRender->GetPassByIndex( p )->Apply( 0 ); m_pDevice->DrawIndexed(m_nIndexCount, 0, 0 ); }
mi chiedevo se esistono metodi migliori.
grazie.

Rispondi quotando