En la mayoría de los casos, estos problemas caerían en la categoría de "comportamiento indefinido" (no en el sentido de C ++, sino en una comprensión más amplia).
Lo que estaría haciendo es esencialmente eludir la abstracción proporcionada por MonoGame (como ejemplo, esto, por supuesto, se aplica básicamente a cualquier API de nivel superior). Al hacerlo, puede hacer que se infrinjan las garantías invariables de clase, lo que a su vez significa que las suposiciones en las que los autores de MonoGame pudieron escribir su código ya no son ciertas y el código puede comportarse inesperadamente. Su propio código realmente ya no puede confiar en las garantías invariantes de la abstracción, ya que las ha roto.
Este comportamiento inesperado incluirá, potencialmente, toda la gama de tales comportamientos, desde simples artefactos de renderizado hasta bloqueos o daños en la memoria.
Por ejemplo, si juega con algún estado de API de renderizado al ejecutar MonoGame, es posible que no pueda detectar ese cambio de estado (porque probablemente no sondeará los cambios en la API subyacente, es más eficiente que simplemente suponga que es el que controla la API y rastrea esos cambios en sí mismo). En consecuencia, puede decidir, en el próximo pase de renderizado, que no necesita actualizar algo que de hecho debería actualizarse y su escena puede no renderizarse correctamente.
O podría meterse con la API subyacente y alterar el recuento de referencia de algún objeto del dispositivo (suponiendo D3D), lo que significa que puede liberarse prematuramente de MonoGame o accidentalmente no liberarse, lo que resulta en un posible bloqueo o pérdida de recursos.
O bien, podría hacer algo que funcione, pero debido a que se está burlando de una manera no compatible y con características indocumentadas o patrones de acceso inesperados, puede encontrar su código horriblemente roto en la próxima versión.
O podría hacer algo, funciona bien para algunas versiones, pero luego se encuentra con otro error y tiene dificultades para rastrearlo, por lo que le pide ayuda a la gente de MonoGame, tal vez enviando un informe de error porque está seguro de que Un problema en su código. No pueden reproducir el error, por supuesto, y finalmente resulta que estás haciendo esta piratería de acceso directo y, en ese momento, independientemente de si tu piratería es la causa principal del error, Probablemente deje de gastar recursos en su solución simplemente porque está haciendo algo sin soporte (o al menos, probablemente lo desestabilizarán).
Por supuesto, en algunos casos, a pesar de todo puede tener para eludir la API, tal vez para evitar un error en el software para el que no se dará a conocer el parche oficial en el tiempo de envío. Si absolutamente tiene que hacer esto, debe tomar el enfoque suave: intente alcanzar su acceso directo de la manera más estrecha posible y asegúrese de intentar dejar el estado de la API subyacente lo más inalterable posible cuando haya terminado con su intromisión. . No es una garantía de éxito, pero puede ayudar.
Sin embargo, idealmente evitarás este tipo de cosas por completo.