Ho visto molte domande in quest'area ma non questa domanda esatta, quindi mi scuso se questo è un duplicato.
Sto realizzando un piccolo gioco 3D. Ad essere onesti, è solo un piccolo progetto di hobby e probabilmente non si rivelerà un vero gioco, sarò felice di fare una bella demo grafica e conoscere il rendering 3d e il design c ++.
Il mio intento è quello di utilizzare direct3d9 per il rendering in quanto ne ho una piccola esperienza e sembra soddisfare i miei requisiti. Tuttavia, se ho imparato una cosa come programmatore, è chiedere " c'è qualche ragione plausibile che questo componente possa essere sostituito da una diversa impiantazione " e se la risposta è sì, allora devo progettare un'astrazione e un'interfaccia adeguate a quel componente . Quindi, anche se intendo impiantare d3d9, devo progettare un'interfaccia 3d che potrebbe essere implementata per d3d11, opengl ...
La mia domanda è: a che livello è meglio farlo? Sto pensando che un'interfaccia in grado di creare e successivamente disegnare
- Buffer di vertici e buffer di indice
- Textures
- "Shader" di vertici e pixel
- Qualche rappresentazione dello stato del disegno (metodi di fusione, ecc ...)
In altre parole, un'interfaccia di livello abbastanza basso in cui il mio codice per disegnare ad esempio un modello animato userebbe l'interfaccia per ottenere buffer di vertici astratti ecc. Temo però che sia un livello troppo basso per astrarre tutte le funzionalità di cui ho bisogno in modo efficiente.
L'alternativa è farlo a un livello superiore in cui l'interfaccia può disegnare oggetti, animazioni, paesaggi ecc. E implementarli per ciascun sistema. Sembra più lavoro, ma immagino sia più flessibile.
Quindi questa è davvero la mia domanda, quando astraggiamo il sistema di disegno, quale livello di interfaccia funziona meglio?