He visto muchas preguntas en esta área, pero no esta pregunta exacta, así que disculpas si esto es un duplicado.
Estoy haciendo un pequeño juego en 3D. Bueno, para ser honesto, es solo un pequeño proyecto de pasatiempo y probablemente no resulte ser un juego real, estaré encantado de hacer una buena demostración de gráficos y aprender sobre renderizado 3D y diseño de c ++.
Mi intención es usar direct3d9 para renderizar, ya que tengo poca experiencia y parece cumplir con mis requisitos. Sin embargo, si he aprendido una cosa como programador es preguntar " ¿hay alguna razón concebible de que este componente pueda ser reemplazado por una implicación diferente " y si la respuesta es sí, entonces necesito diseñar una abstracción e interfaz adecuadas para ese componente . Entonces, aunque tengo la intención de implicar d3d9, necesito diseñar una interfaz 3d que pueda implementarse para d3d11, opengl ...
Mi pregunta es, ¿en qué nivel es mejor hacer esto? Estoy pensando que una interfaz capaz de crear y luego dibujar
- Tampones de vértices y tampones de índice
- Texturas
- "Sombreadores" de vértices y píxeles
- Alguna representación del estado de dibujo (modos de fusión, etc.)
En otras palabras, una interfaz de nivel bastante bajo en la que mi código para dibujar, por ejemplo, un modelo animado, usaría la interfaz para obtener buffers de vértices abstractos, etc.
La alternativa es hacer esto en un nivel superior donde la interfaz puede dibujar objetos, animaciones, paisajes, etc., e implementarlos para cada sistema. Parece más trabajo, pero supongo que es más flexible.
Entonces esa es mi pregunta realmente, cuando abstrae el sistema de dibujo, ¿qué nivel de interfaz funciona mejor?