Tingkat terendah yang masuk akal dari sudut pandang saya adalah sesuatu yang berbicara tentang sumber daya yang terlibat dalam rendering - vb / ib, membuat permukaan, tekstur, shader, blok negara, dll.
Masalahnya di sini adalah bahwa beberapa dari ini harus dalam format yang berbeda, tergantung pada API - di situlah agak rumit. Cara termudah untuk mengatasinya adalah dengan pra-proses sumber daya statis untuk masing-masing API. Untuk yang dinamis, gunakan hanya shader untuk menghasilkannya - yang membuatnya cukup mudah untuk tetap dalam format asli.
Yang Anda lakukan di level yang lebih tinggi adalah mengatur jalur pipa dengan sumber daya terlampir dan menyerahkannya ke GPU. Anda akan menemukan bahwa tidak semuanya dapat disarikan dengan baik dengan cara itu, terutama jika Anda memanfaatkan trik khusus perangkat keras. Tapi ini awal yang baik.
(Sidenote: jika Anda memperlakukan trik platform khusus sebagai jenis sumber daya khusus, Anda dapat mendorong keseluruhan konsep ini cukup jauh.)
Jadi, Anda akan menciptakan dua hal: Manajer sumber daya perangkat keras, ditambah toolkit untuk menyiapkan DAG sumber daya ini.