Dalam kebanyakan kasus masalah ini akan masuk dalam kategori "perilaku tidak terdefinisi" (bukan dalam pengertian C ++, tetapi dalam pemahaman yang lebih luas).
Apa yang akan Anda lakukan pada dasarnya adalah menghindari abstraksi yang disediakan oleh MonoGame (sebagai contoh, ini tentu saja berlaku untuk API tingkat tinggi semacam itu). Dengan melakukannya, Anda dapat menyebabkan jaminan kelas invarian dilanggar, yang pada gilirannya berarti asumsi yang penulis MonoGame mampu menulis kode mereka di bawah mungkin tidak lagi benar dan kode mungkin berperilaku tidak terduga. Kode Anda sendiri benar-benar tidak bisa lagi bergantung pada jaminan inversi abstraksi, juga, karena Anda telah melanggarnya.
Perilaku tak terduga ini akan mencakup, secara potensial, keseluruhan keseluruhan perilaku tersebut dari artefak rendering sederhana hingga kerusakan atau kerusakan memori.
Misalnya, jika Anda mengutak-atik keadaan rendering API dengan menjalankan MonoGame sendiri, itu mungkin tidak dapat mendeteksi perubahan negara itu (karena itu mungkin tidak akan polling API yang mendasari perubahan, itu lebih efisien untuk itu hanya dengan anggap itu yang mengendalikan API dan melacak perubahan itu sendiri). Karena itu, mungkin memutuskan, pada render pass berikutnya, bahwa itu tidak perlu memperbarui sesuatu yang sebenarnya harus diperbarui dan adegan Anda mungkin tidak benar render.
Atau Anda dapat mengacaukan dengan API yang mendasarinya dan mengubah jumlah referensi beberapa objek perangkat (dengan asumsi D3D), yang berarti bahwa itu bisa dilepaskan sebelum waktunya dari di bawah MonoGame atau tidak sengaja dilepaskan, yang mengakibatkan kemungkinan kerusakan atau kebocoran sumber daya.
Atau Anda bisa melakukan sesuatu yang berhasil, tetapi karena Anda sedang mengoceh dengan cara yang tidak didukung dan dengan fitur tidak berdokumen atau pola akses yang tidak terduga, Anda dapat menemukan kode Anda rusak parah pada rilis berikutnya.
Atau Anda dapat melakukan sesuatu, itu berfungsi dengan baik untuk beberapa versi, tetapi kemudian Anda mengalami beberapa bug lain dan mengalami kesulitan melacaknya, jadi Anda meminta bantuan orang MonoGame, mungkin mengirimkan laporan bug karena Anda yakin itu masalah dalam kode mereka. Mereka tidak dapat mereproduksi bug, tentu saja, dan akhirnya diketahui bahwa Anda melakukan peretasan akses langsung aneh ini dan pada saat itu - terlepas dari apakah peretasan Anda adalah penyebab utama bug - mereka Mungkin akan berhenti menghabiskan sumber daya untuk perbaikan Anda hanya karena Anda melakukan hal yang tidak didukung (atau setidaknya, mereka mungkin akan memprioritaskan Anda).
Tentu saja, dalam beberapa kasus Anda mungkin benar - benar harus menghindari API, mungkin untuk mengatasi bug dalam perangkat lunak pengiriman yang tambalan resmi tidak akan dirilis pada waktunya. Jika Anda benar - benar harus melakukan ini, Anda harus mengambil pendekatan lunak: cobalah untuk mengatur akses langsung Anda sesempit mungkin, dan pastikan Anda mencoba untuk meninggalkan keadaan API yang mendasarinya tidak berubah mungkin ketika Anda selesai dengan campur tangan Anda . Ini bukan jaminan kesuksesan, tetapi bisa membantu.
Namun, idealnya Anda akan menghindari hal semacam ini sepenuhnya.