대부분의 경우 이러한 문제는 "정의되지 않은 동작"(C ++ 의미가 아니라보다 광범위한 이해) 범주에 속합니다.
당신이하고있는 일은 본질적으로 MonoGame에서 제공하는 추상화를 우회하는 것입니다 (예를 들어, 이것은 기본적으로 모든 상위 수준의 API에 적용됩니다). 이렇게하면 클래스 불변 보증이 위반 될 수 있습니다. 이는 MonoGame 작성자가 코드를 작성할 수 있다는 가정이 더 이상 사실이 아니며 코드가 예기치 않게 작동 할 수 있음을 의미합니다. 자신의 코드는 더 이상 추상화의 고정 보증에 의존 할 수 없습니다.
이 예기치 않은 동작에는 단순한 렌더링 아티팩트에서 충돌 또는 메모리 손상에 이르기까지 이러한 동작의 전체 영역이 포함될 수 있습니다.
예를 들어 MonoGame 자체를 끝까지 실행하여 일부 렌더링 API 상태를 사용하는 경우 해당 상태 변경을 감지하지 못할 수 있습니다 (아마도 기본 API에서 변경 사항을 폴링하지 않기 때문에 더 효율적 임) API를 제어하고 변경 사항을 추적하는 것으로 가정합니다). 결과적으로 다음 렌더 패스에서 실제로 업데이트되어야하는 장면을 업데이트 할 필요가없고 장면이 올바르게 렌더링되지 않을 수 있습니다.
또는 기본 API를 망칠 수 있고 일부 장치 객체의 참조 수를 변경 (D3D 가정)하여 MonoGame에서 조기에 릴리스되거나 실수로 릴리스 되지 않아 충돌 또는 리소스 누수가 발생할 수 있습니다.
또는 작동하는 작업을 수행 할 수 있지만 지원되지 않는 방식으로 문서화되지 않은 기능이나 예기치 않은 액세스 패턴으로 인해 다음 릴리스에서 코드가 끔찍하게 손상 될 수 있습니다.
또는 몇 가지 버전에서는 잘 작동하지만 나중에 다른 버그가 발생하여 추적하기가 어려우므로 MonoGame 담당자에게 도움을 요청하십시오. 그들의 코드에 문제가 있습니다. 물론 버그를 재현 할 수 없으며 마침내 해커가 버그의 근본 원인인지 여부에 관계 없이이 이상한 직접 액세스 해커를 수행하고 있으며 그 시점에서 나타납니다. '지원되지 않는 일을하고 있기 때문에 (또는 적어도 우선 순위를 낮출 가능성이 있음) 단순히 수정에 대한 리소스 소비를 중단 할 것입니다.
물론 어떤 경우 에는 공식 패치가 제 시간에 출시되지 않는 소프트웨어 배송 버그를 해결하기 위해 API를 우회 해야 할 수도 있습니다 . 당신이 절대적 경우 이 범위를 좁게 가능한 한 직접적인 접근을 시도하고 당신이 당신의 간섭으로 완료되면 가능한 한 변화로서 기본이되는 API의 상태를 떠나려 확인 :이 작업을 수행하기 위해, 당신은 부드러운 접근 방식을 취해야한다 . 성공을 보장하는 것은 아니지만 도움이 될 수 있습니다.
이상적으로는 이런 종류의 것을 완전히 피할 수 있습니다.