Saya telah melihat banyak pertanyaan di area ini tetapi bukan pertanyaan yang tepat ini, jadi minta maaf jika ini adalah duplikat.
Saya membuat game 3d kecil. Yah jujur saja, ini hanya proyek hobi kecil dan kemungkinan tidak akan berubah menjadi game yang sebenarnya, saya akan dengan senang hati membuat demo grafis yang bagus dan belajar tentang rendering 3d dan desain c ++.
Maksud saya adalah menggunakan direct3d9 untuk rendering karena saya memiliki sedikit pengalaman tentang hal itu, dan tampaknya memenuhi persyaratan saya. Namun jika saya telah mempelajari satu hal sebagai seorang programmer, ia bertanya " apakah ada alasan yang memungkinkan bahwa komponen ini dapat diganti dengan penerapan yang berbeda " dan jika jawabannya adalah ya maka saya perlu merancang abstraksi yang tepat dan antarmuka ke komponen itu. . Jadi meskipun saya berniat untuk mengimplementasikan d3d9 saya perlu merancang antarmuka 3d yang dapat diimplementasikan untuk d3d11, opengl ...
Pertanyaan saya kemudian adalah pada level apa yang terbaik untuk melakukan ini? Saya berpikir bahwa antarmuka mampu membuat dan menggambar nanti
- Buffer verteks dan buffer indeks
- Tekstur
- Vertex dan Pixel "shaders"
- Beberapa representasi dari negara gambar (blending mode dll ...)
Dengan kata lain antarmuka tingkat yang cukup rendah di mana kode saya untuk menggambar misalnya model animasi akan menggunakan antarmuka untuk mendapatkan buffer vertex abstrak dll. Namun saya khawatir itu terlalu rendah untuk abstrak semua fungsi yang saya butuhkan secara efisien.
Alternatifnya adalah melakukan ini di tingkat yang lebih tinggi di mana antarmuka dapat menggambar objek, animasi, lanskap dll, dan mengimplementasikannya untuk setiap sistem. Ini sepertinya lebih banyak pekerjaan, tapi kurasa lebih fleksibel.
Jadi itulah pertanyaan saya, ketika mengabstraksi sistem menggambar, tingkat antarmuka apa yang paling baik?