Mulailah dengan mengidentifikasi apa yang sebenarnya Anda butuhkan dari bagian "wrapper" dari API. Ini umumnya sangat, sangat sederhana: Anda memerlukan sumber daya dasar (buffer, shader, tekstur, keadaan pipa) dan cara untuk menggunakan sumber daya tersebut untuk membangun bingkai dengan mengirimkan beberapa panggilan draw.
Cobalah untuk menjaga logika tingkat tinggi apa pun dari bagian pembungkus API. Jika Anda menerapkan teknik penyisihan adegan pintar di bagian API ini, nah sekarang Anda berada di hook untuk menduplikasi logika itu di semua implementasi backend. Itu banyak usaha ekstra, jadi tetap sederhana. Manajemen adegan harus menjadi bagian dari bagian API tingkat tinggi yang menggunakan bungkus daripada menjadi bagian dari bungkus itu sendiri.
Pilih target yang akan Anda dukung dan pahami. Sulit untuk menulis pembungkus yang layak untuk "segalanya," dan Anda mungkin tidak perlu (bisa dibilang Anda tidak perlu menulis satu bungkus pun, seperti yang disebutkan dalam jawaban Philipp ). Hampir tidak mungkin untuk menulis pembungkus yang layak jika Anda tidak tahu API yang akan Anda bungkus.
Evaluasi keadaan API Anda secara teratur. Seharusnya secara umum memiliki area permukaan yang lebih kecil daripada API yang dibungkus di bawahnya; jika Anda menemukan diri Anda membuat jenis pembungkus satu-ke-satu untuk setiap struktur D3D atau setiap panggilan fungsi OpenGL Anda mungkin membelok di luar jalur.
Lihatlah pekerjaan apa yang telah terjadi sebelumnya. Sokol dan BGFX adalah API yang menyediakan tingkat agnostisisme yang mungkin berguna bagi Anda, dan relatif mudah dipahami (terutama yang pertama).