ciao.
Sto provando a creare un engine 3d in c++ , piu' per studio e divertimento che per altro.
Ho creato una classe astratta CMeshBase che espone tre metodi virtuali principali:
Initialize() Setup() e Draw();
Initialize carica le risorse principali in pratica inizializza e crea dei buffer(per i vertici e per gli indici) che verranno poi linkati nel Setup() e infine visualizzati nel draw.
Ora CMeshBase è la classe base a cui si rifaranno tutte le altre classi Mesh specializzate.
Per esempio:
Vorrei creare la classe CMeshTexture che eredita da CMeshBase ; in piu questa classe deve semplicemente inizializzare una texture nell' initialize linkarla nel SetUp e visualizzarla nel Draw.
Saranno in tutto 5 righe di codice, mentre l'initialize nella CMeshBase ne ha svariate di piu'.
Come è il metodo in questo caso?
Se eredito CMeshTexture da CMeshBase non vorrei fare l'override di Initialize(),setup() e draw() perchè dovrei riscrivere tutto il codice , vorrei aggiungere semplicemente quelle poche righe che devo.
1)Ho pensato che forse si puo fare l'override ,scrivere quelle poche righe e poi chiamare il metodo della classe base .
E' questo il modo di procedere?
2)O è meglio creare nella classe astratta un InitializeTexture(),SetupTexture e DrawTexture() virtuali?
in modo che qualsiasi classe che deriva da CMeshBase se è del tipo Texture utilizzerà come deve le texture per polimorfismo?
Il dubbio è questo:
3)E' giusto creare tantissimi metodi virtuali nella classe base
4)o è meglio creare questi metodi virtuali exnovo nella classe che per prima li dovrà utilizzare? In questo caso CMeshTexture
potrebbe avere InitializeTexture(),SetupTexture e DrawTexture() virtuali e la classe base niente , in questo modo pero' perdo l'utilizzo del polimorfismo di questi metodi sulla classe CMeshBase , in quanto in quest'ultima non sono presenti.
Grazie.