Na maioria dos casos, esses problemas se enquadram na categoria de "comportamento indefinido" (não no sentido C ++, mas em um entendimento mais amplo).
O que você estaria fazendo é essencialmente contornar a abstração fornecida pelo MonoGame (como exemplo, isso obviamente se aplica a basicamente qualquer API de nível superior). Ao fazer isso, você pode fazer com que as garantias invariantes de classe sejam violadas, o que, por sua vez, significa que as suposições sob as quais os autores do MonoGame foram capazes de escrever seu código podem não ser mais verdadeiras e o código pode se comportar inesperadamente. Seu próprio código também não pode mais confiar nas garantias invariantes da abstração, desde que você as violou.
Esse comportamento inesperado incluirá, potencialmente, toda a gama desse comportamento, de artefatos simples de renderização a falhas ou corrupção de memória.
Por exemplo, se você mexer com algum estado da API de renderização executando o próprio MonoGame, talvez não seja possível detectar essa alteração de estado (porque provavelmente não pesquisará as alterações na API subjacente, é mais eficiente simplesmente suponha que é o único que controla a API e rastreia essas alterações). Conseqüentemente, pode decidir, na próxima passagem de renderização, que não precisa atualizar algo que deve ser atualizado e sua cena pode não ser renderizada corretamente.
Ou você pode mexer com a API subjacente e alterar a contagem de referência de algum objeto do dispositivo (assumindo o D3D), o que significa que ele pode ser lançado prematuramente sob o MonoGame ou acidentalmente não liberado, resultando em uma provável falha ou vazamento de recursos.
Ou você pode fazer algo que funcione, mas como você está mexendo de uma maneira não suportada e com recursos não documentados ou padrões de acesso inesperados, poderá encontrar seu código terrivelmente quebrado no próximo lançamento.
Ou você pode fazer algo, ele funciona bem para algumas versões, mas depois você encontra algum outro bug e tem dificuldade em localizá-lo, então pede ajuda ao pessoal do MonoGame, talvez enviando um relatório de bug, porque você tem certeza de que um problema no código deles. Eles não podem reproduzir o bug, é claro, e finalmente surge que você está fazendo esse hackery estranho de acesso direto e nesse ponto - independentemente de seu hackery ser ou não a causa raiz do bug - eles provavelmente deixará de gastar recursos em sua correção, simplesmente porque você está fazendo uma coisa não suportada (ou pelo menos, eles provavelmente a priorizarão).
É claro que, em alguns casos, você pode absolutamente precisar burlar a API, talvez para solucionar um erro no software de remessa, para o qual o patch oficial não será lançado a tempo. Se você absolutamente precisar fazer isso, deve adotar a abordagem mais suave: tente definir o escopo do seu acesso direto o mais estreitamente possível e tente deixar o estado da API subjacente o mais inalterado possível quando terminar sua intromissão. . Não é uma garantia de sucesso, mas pode ajudar.
Idealmente, você evitará esse tipo de coisa completamente.